正则表达式详细讲解

目录

一、正则表达式概念

二、八元素

1、普通字符:

2、元字符:

3、通配符 .:

4、字符类 []:

5、量词:

6、锚点 ^ 和 $:

7、捕获组 ():

8、转义字符 \:

三、日常使用的正则表达式

1、邮箱

2、电话(美国)

3、URL

4、日期(YYYY-MM-DD)

5、IP地址

6、用户名(仅包含字母和数字,且长度为6-12字符)

7、密码(包含大小写字母、数字、特殊字符,且长度为8-16个字符)

总结

我的其他博客


一、正则表达式概念

正则表达式(Regular Expression,简称Regex或RegExp)是一种用于描述字符串模式的表达式。它提供了一种灵活的方式来进行字符串的匹配、搜索、替换和提取操作。正则表达式是由普通字符和元字符(metacharacters)组成的字符串,这些元字符具有特殊的意义,用于定义匹配规则。

以下是正则表达式的一些基本概念和元素:

  1. 普通字符: 表达式中的普通字符(例如字母、数字、符号)表示它们自身,只有它们自身与输入字符串中的字符匹配。

  2. 元字符: 元字符是具有特殊含义的字符,它们用于构建匹配模式。例如,*+.^$ 等都是元字符。

  3. 通配符: .(点)是一个通配符,匹配任意单个字符,除了换行符。

  4. 字符类: 方括号 [] 用于定义一个字符类,匹配其中任意一个字符。例如,[aeiou] 可以匹配任何一个元音字母。

  5. 量词: 量词用于指定匹配模式中字符的数量。例如,* 表示零个或多个,+ 表示一个或多个,? 表示零个或一个。

  6. 锚点: ^(脱字符)用于匹配字符串的开头,$ 用于匹配字符串的结尾。

  7. 捕获组: 使用圆括号 () 可以创建捕获组,用于分组并记住匹配的子表达式。捕获组允许你提取匹配的部分。

  8. 转义字符: 反斜杠 \ 用于转义元字符,使其失去特殊含义,匹配字符本身。例如,\. 匹配实际的点字符。

正则表达式的语法因编程语言而异,但基本的概念和元素在大多数语言中是相似的。许多编程语言(如Python、JavaScript、Java)都提供了内置的正则表达式支持。正则表达式是一个强大而灵活的工具,但有时也可能变得复杂,特别是对于复杂的匹配模式。

二、八元素

1、普通字符:

普通字符是正则表达式中的字母、数字、符号等,它们表示它们自身。例如,正则表达式中的 a 将精确匹配字符串中的字母 "a"。

2、元字符:

元字符是具有特殊含义的字符,用于构建匹配模式。一些常见的元字符包括:

  • .:匹配任意单个字符(除了换行符)。
  • *:匹配前一个字符的零个或多个实例。
  • +:匹配前一个字符的一个或多个实例。
  • ?:匹配前一个字符的零个或一个实例。
  • ^:匹配字符串的开始。
  • $:匹配字符串的结束。
  • []:定义字符类,匹配其中任意一个字符。
  • ():创建捕获组。

3、通配符 .

点号 . 是一个通配符,用于匹配任意单个字符,除了换行符。例如,正则表达式 a.c 可以匹配 "abc"、"adc"、"a1c" 等。

4、字符类 []

字符类用于定义一个字符集合,匹配其中的任意一个字符。例如,正则表达式 [aeiou] 匹配任何一个元音字母。

5、量词:

  • 量词用于指定字符或字符类的重复次数。
    • *:匹配前一个字符的零个或多个实例。
    • +:匹配前一个字符的一个或多个实例。
    • ?:匹配前一个字符的零个或一个实例。
  • 例如,正则表达式 \d+ 可以匹配一个或多个数字。

6、锚点 ^$

^ 用于匹配字符串的开始,$ 用于匹配字符串的结束。例如,正则表达式 ^start 可以匹配以 "start" 开始的字符串。

7、捕获组 ()

捕获组用于创建子表达式,可以对其进行分组,以便后续引用或提取。例如,正则表达式 (\d+)-(\w+) 可以匹配像 "123-abc" 这样的字符串,并将数字和字母分别放入两个捕获组中。

8、转义字符 \

反斜杠 \ 用于转义元字符,使其失去特殊含义,匹配字符本身。例如,\. 可以匹配实际的点字符。

三、日常使用的正则表达式

1、邮箱

  • 正则表达式:^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
  • 用途:用于验证电子邮件地址的格式。

2、电话(美国)

  • 正则表达式:^\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}$
  • 用途:用于验证美国的电话号码格式,包括可选的括号、分隔符。

3、URL

  • 正则表达式:^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$
  • 用途:用于验证URL的格式。

4、日期(YYYY-MM-DD)

  • 正则表达式:^\d{4}-\d{2}-\d{2}$
  • 用途:用于验证日期的格式,例如:2023-12-07。

5、IP地址

  • 正则表达式:^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$
  • 用途:用于验证IPv4地址的格式。

6、用户名(仅包含字母和数字,且长度为6-12字符)

  • 正则表达式:^[a-zA-Z0-9]{6,12}$
  • 用途:用于验证用户名的格式,只包含字母和数字,长度为6到12个字符。

7、密码(包含大小写字母、数字、特殊字符,且长度为8-16个字符)

  • 正则表达式:^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,16}$
  • 用途:用于验证密码的格式,包含大小写字母、数字和特殊字符,长度为8到16个字符。

总结

正则表达式是一项强大而灵活的技能,它在许多编程语言和文本编辑器中都有广泛的应用。熟练地使用正则表达式可以大大提高文本处理和字符串操作的效率

我的其他博客

HTTP与HTTTPS的区别-CSDN博客

 

什么情况下会产生StackOverflowError(栈溢出)和OutOfMemoryError(堆溢出)怎么排查-CSDN博客

谈谈我对HashMap扩容机制的理解及底层实现-CSDN博客 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/228672.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【USRP】5G / 6G OAI 系统 5g / 6G OAI system

面向5G/6G科研应用 USRP专门用于5G/6G产品的原型开发与验证。该系统可以在实验室搭建一个真实的5G 网络,基于开源的代码,专为科研用户设计。 软件无线电架构,构建真实5G移动通信系统 X410 采用了目前流行的异构式系统,融合了FP…

unity 2d 入门 飞翔小鸟 小鸟跳跃 碰撞停止挥动翅膀动画(十)

1、切换到动画器 点击make transition和exit关联起来 2、设置参数 勾选掉Has Exit Time 3、脚本给动画器传参 using System.Collections; using System.Collections.Generic; using UnityEngine;public class Fly : MonoBehaviour {//获取小鸟(刚体)p…

前端学习微信小程序开发

1.微信小程序项目结构 2.WXML和HTML的区别 3.WXSS与CSS的区别 4.小程序中的.js文件 5.小程序的宿主环境 宿主环境是指程序运行所必须的依赖环境,因此手机微信时小程序的宿主环境。小程序宿主环境包含了通信模型、运行机制、组件、API。 (1)…

OpenAI的Sam Altman,获《时代》2023年度最佳CEO

12月7日,《时代》周刊在官网公布了2023年最佳CEO——OpenAI的Sam Altman。 此外,梅西入选了年度最佳运动员,Taylor Swift入选年度最佳人物,Alex Newell获年度突破奖。 《时代》周刊曾在今年的9月8日发布了“2023年AI领域最有影响…

轮播插件Slick.js使用方法详解

相比于Swiper而选择使用Slick.js的原因主要是因为其兼容不错并且在手机端的滑动效果更顺畅 参数: 1.基本使用:一般使用只需前十个属性 $(.box ul).slick({autoplay: true, //是否自动播放pauseOnHover: false, //鼠标悬停暂停自动播放speed: 1500, //…

【广州华锐互动】VR煤矿生产事故体验系统为矿工提供一个身临其境的安全实训环境

随着科技的不断发展,虚拟现实(VR)技术已经逐渐走进我们的生活,为我们带来了前所未有的沉浸式体验。在许多领域,如教育、医疗、娱乐等,VR技术都发挥着重要作用。然而,当这项技术被用于模拟煤矿坍…

前端打包环境配置步骤

获取node安装包并解压 获取node安装包 wget https://npmmirror.com/mirrors/node/v16.14.0/node-v16.14.0-linux-x64.tar.xz 解压 tar -xvf node-v16.14.0-linux-x64.tar.xz 创建软链接 sudo ln -s 此文件夹的绝对路径/bin/node /usr/local/bin/node,具体执行如下…

c语言详解牛顿迭代法以及求解倒数和平方根

Newtons iteration method 是在实数域和复数域利用切线不断逼近方程根的一种求高次曲线方程的方法,区别于梯度下降法,它是二阶导,收敛速度比较快,对于非凸函数,牛顿法容易受到鞍点或者最大值点的吸引。由于牛顿迭代法是…

碳化硅MOS管在三相逆变器上的应用-REASUNOS瑞森半导体

一、前言 三相逆变是指转换出的交流电压为三相,即AC380V,三相电是由三个频率相同、振幅相等、相位依次互差120度的交流电势组成。 三相逆变器的定义是将直流电能转换为交流电能的转换器,其基本原理就是SPWM,硬件架构为四个功率模…

【PyTorch】多层感知机

文章目录 1. 理论介绍1.1. 背景1.2. 多层感知机1.3. 激活函数1.3.1. ReLU函数1.3.2. sigmoid函数1.3.3. tanh函数 2. 代码实现2.1. 主要代码2.2. 完整代码2.2. 输出结果 1. 理论介绍 1.1. 背景 许多问题要使用线性模型,但无法简单地通过预处理来实现。此时我们可以…

暖雪-终业游戏攻略 开荒职业无量尊者圣物搭配(60亿秒伤)

本攻略基本没有用到dlc2的圣物,便于前期开荒,远程攻击难度低(本体也能用这套搭配) 圣物搭配&面板展示 开局可以选择遗物的可以选:堕龙(放三号位) 核心: 灵玉/青龙力量: 玄武/青龙/飞蝗剑/灵玉/朱雀敏捷: 堕龙功效: 憎恨之心 圣物优先级越靠前的越好 武器选择 回魂-搭…

Sublime Text 卡顿

复制下方代码,保存后重启Sublime Text {"non_blocking" : "true","live_mode" : "false" }

28. Python Web 编程:Django 基础教程

目录 安装使用创建项目启动服务器创建数据库创建应用创建模型设计路由设计视图设计模版 安装使用 Django 项目主页:https://www.djangoproject.com 访问官网 https://www.djangoproject.com/download/ 或者 https://github.com/django/django Windows 按住winR 输…

基于SpringBoot+Vue学生成绩管理系统前后端分离(源码+数据库)

一、项目简介 本项目是一套基于SpringBootVue学生成绩管理系统,主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目可以直接作为bishe使用。 项目都经过严格调试,确…

OpenCL学习笔记(二)手动编译开发库(win10+vs2019)

前言 有时需求比较特别,可能需要重新编译opencl的sdk库。本文档简单记录下win10下,使用vs2019编译的过程,有需要的小伙伴可以参考下 一、获取源码 项目地址:GitHub - KhronosGroup/OpenCL-SDK: OpenCL SDK 可以直接使用git命令…

PostgreSQL从小白到高手教程 - 第38讲:数据库备份

PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注CUUG PG技术大讲堂。 第38讲&#…

【MATLAB源码-第97期】基于matlab的能量谷优化算法(EVO)机器人栅格路径规划,输出做短路径图和适应度曲线。

操作环境: MATLAB 2022a 1、算法描述 能量谷优化算法(Energy Valley Optimization, EVO)是一种启发式优化算法,灵感来源于物理学中的“能量谷”概念。它试图模拟能量在不同能量谷中的转移过程,以寻找最优解。 在EVO…

当然热门的原创改写改写大全【2023最新】

在信息时代,随着科技的不断发展,改写软件逐渐成为提高文案质量和写作效率的重要工具。本文将专心分享一些好用的改写软件,其中包括百度文心一言智能写作以及147SEO改写软件。这些工具不仅支持批量改写,而且在发布到各大平台后能够…

一文详解设备维护管理软件:降本增效的关键利器

设备维护管理软件是一种专门为优化和简化设备维护流程而设计的工具。随着技术的进步和业务的扩展,各类企业和机构不得不面对规模日益庞大和复杂的设备和基础设施,如何高效地维护和管理这些设备成为企业发展中面临的一项重要挑战。 在这个背景下&#xff…

uniapp实战 —— 开发微信小程序的调试技巧

手机真机调试微信小程序 开发版和体验版的小程序,域名没有备案时想调试接口访问效果,可以按下述方式操作: 在手机上点右上方三个点,点击“开发调试”,开启调试模式,即可真机访问接口(跳过域名校…
最新文章