正则表达式的匹配规则

字面量字符和元字符

大部分字符在正则表达式中,就是字面的含义,比如 /a/ 匹配 a, /b/ 匹配b。这种只表示它字面量含义的被称为字面量字符。

除了字面量,还有一些字符有特殊含义,不代表字面意思,被称为元字符
  
1,点字符(.)
      点字符匹配除回车(\r)、换行(\n)、行分隔符(\u2028)和分段符(\u2029)之外的所有字符 注:码点大于0xFFFF的Unicode字符不能被匹配,因为会被认为是两个字符。      
      
2,位置字符
      ^ 表示字符串的开始位置, $ 表示字符串的结束位置。
      
3,选择符(|)
      竖线符号在正则中表示 ‘或关系’ , 即匹配其中之一即可。
    …等等

转义符

正则中那些有特殊含义的元字符,如果要匹配它们本身,就要在前面加反斜杠。 比如要匹配 +, 就必须写成 +;
  在正则中,需要反斜杠转义的一共有12个字符: ^ . [ $ ( ) | * + ? { \ 注意:如果使用RegExp方法生成正则,转义需要加两个斜杠,因为字符串需要先转义一次。

特殊字符

\r 匹配回车符

\t 匹配制表符 tab

\n 匹配换行符

\v 匹配垂直制表符

\f 匹配换页符

\0 匹配null字符

字符类

字符类表示有一系列字符可供选择,只要匹配其中一个就可以。所有可供选择的字符放在中括号内,比如[abc] 表示 a b c之中任选一个。
  
1,脱字符(^)
    如果方括号内的第一个字符为 ^ , 则表示取反。 [^]表示匹配一切字符。
    
2,连字符(-)
    对于连续序列的字符,可以用-来进行简写。 a-z 0-9 A-Z -u4e00-\u9fa5

预定义模式

\d 匹配0-9的数字, 相当于[0-9]

\D 匹配非0-9的字符。 相当于[^0-9]

\w 匹配任意字母数字下划线。 相当于[0-9a-zA-Z_]

\W 相当于\w取反

\s 匹配空格(包括换行符、制表符、空格符), 相当于[ \t\r\n\v\f]

\S 相当于\s取反

\b 匹配单词边界

\B 匹配非单词边界,即在词的内部

重复类

模式的匹配次数,使用大括号{ }表示,{n}表示重复n次,{n,}表示至少重复n次,{n,m}表示重复不少于n次,不多于m次。

量词符

量词符用来设定某个模式出现的次数。
    ?问号表示某个模式出现0次或1次, 等同于{0, 1};
    
    * 星号表示出现0次或多次,等同于{0, } 
    
    + 加号表示出现1次或多次, 等同于{1, }

贪婪模式

量词符默认情况下都是最大可能匹配,即匹配到不能匹配为止,这种模式就叫贪婪模式
  /a+/ 表示匹配1个或多个a,那么到底会匹配几个a呢? 因为默认的是贪婪模式,所以会一直匹配到后面不是a为止。
  如果想将贪婪模式改为非贪婪模式,可以在量词后面加一个问号。这时候一旦满足条件,就不再往下匹配了。
  *?表示某个模式出现0次或者多次,采用非贪婪模式
  +?表示模式出现1次或者多次,采用非贪婪模式

修饰符

g 表示全局匹配

i 表示忽略大小写

m 表示多行模式。会修改^和的行为。加了m修饰符后,和的行为。 加了m修饰符后,^和m会识别换行符( \n )

组匹配

1,正则中的括号()表示分组匹配,括号中的模式表示分组中的内容。
    在正则表达式内部, 还可以使用 \n 来引用括号匹配的内容, n是从1开始,表示对应顺序的括号
    /(.)b(.)\1b\2/.test(‘abcabc’); \1匹配了第一个括号的a, \2匹配了第二个括号的c
    
2,非捕获组
    (?:x)称为非捕获组,表示不返回该组匹配的内容。
    
3,先行断言
    x(?=y)称为先行断言。x只有在y前面才匹配,y不计入匹配结果中。
    
4,先行否定断言
    x(?!y) 为先行否定断言。 x只有不在y前面才匹配。
  
  用通俗的语句来解释上面的这些:
  
    x(?! y): x只有不在y前面才匹配
    
    x(?=a): 表示在a的前面 才匹配。
    
    x(?<= a): 表示a的后面才匹配
    
    x(?<! a): 表示需要不匹配某个模式, 与 (?!a)相反

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql数据库(10):数据 备份

目录 &#xff08;1&#xff09;备份某个数据库下的固定某些表 &#xff08;2&#xff09;对单个或多个库进行完全备份 &#xff08;3&#xff09;对所有库进行完全备份&#xff08;建立all.sql文件) &#xff08;1&#xff09;备份某个数据库下的固定某些表 目标&#xff…

华为5720设置静态路由不通_静态路由理论知识详解

一、简介静态路由是一种需要管理员手工配置的特殊路由。静态路由在不同网络环境中有不同的目的&#xff1a;当网络结构比较简单时&#xff0c;只需配置静态路由就可以使网络正常工作。在复杂网络环境中&#xff0c;配置静态路由可以改进网络的性能&#xff0c;并可为重要的应用…

正则表达式的运算符优先级

正则表达式从左到右进行计算&#xff0c;并遵循优先级顺序&#xff0c;这与算术表达式非常类似。 相同优先级的从左到右进行运算&#xff0c;不同优先级的运算先高后低。下表从最高到最低说明了各种正则表达式运算符的优先级顺序&#xff1a; 运算符 描述 \ 转义符 (), (?:), …

mysql数据库(11):恢复数据

目录 (1)先登录 (2)查看数据库有哪些 (3)新建一个空表text (4)删除数据库yang (5)恢复数据库 (1)先登录 mysql -h localhost -u root -p (2)查看数据库有哪些 show databases; 返回&#xff1a; (3)新建一个空表text create database text; 返回&#xff1a; (4)删除…

c语言sin程序怎么写_用数控铣床加工六芒星,程序应该怎么写?

就用D50MM圆柱毛丕&#xff0c;D10的铣刀粗略写一个&#xff0c;仅代表个人观点哈~主程序:O0000G17G40G49G80G90G54G0G90G54X27.Y-12.5Z50.S2000M3Z3.G1Z0.F300M98P50001G0Z50.M05M30子程序&#xff1a;O0001G91G1Z-2.F300G90G41D1G1X21.65Y-12.50F300G1X7.22X0.Y-25.X-7.22Y-1…

Java数字格式化

数字的格式在解决实际问题时使用非常普遍&#xff0c;这时可以使用 DedmalFormat 类对结果进行格式化处理。例如&#xff0c;将小数位统一成 2 位&#xff0c;不足 2 位的以 0 补齐。 DecimalFormat 是 NumberFormat 的一个子类&#xff0c;用于格式化十进制数字。DecimalForm…

mysql查询三个月内的_如何在三个月内自学攻克雅思6.5分?

新西兰留学移民经历分享-进行时(3)编者按&#xff1a;选新西兰留学前&#xff0c;看过很多博主的帖子&#xff0c;让一个从没到访过新西兰的我有了多一些了解和规划。现在也希望能把自己的经历分享给大家&#xff0c;同时作为人生中比较大的一个决定&#xff0c;想用文字记录全…

万字mysql数据库图文教程

目录 一、前言 ⭐四万字入门教程⭐ 二、连接与断开服务器 三、输入与查询 四、使用数据库 五、创建并选择数据库 六、创建表 七、将数据填入表中 八、从表中检索信息 九、获得数据库和表中信息 十、常用查询例子 十一、数据库备份 十二、数据库恢复 一、前言 本篇…

Java大数字运算

在 Java 中提供了用于大数字运算的类&#xff0c;即 java.math.BigInteger 类和 java.math.BigDecimal 类。这两个类用于高精度计算&#xff0c;其中 BigInteger 类是针对整型大数字的处理类&#xff0c;而 BigDecimal 类是针对大小数的处理类。 BigInteger 类 如果要存储比 …

MySQL从入门到精通详细教程

目录 前言 ⭐集合4万字基础教程⭐ 一、SQL详细教程 二.mysql入门详细教程 ⭐python mysql 图文教程⭐ 一、MySQL和python MySQL安装教程 二、Python MySQL入门连接 三、Python MySQL创建表 四、Python MySQL插入表 五、Python MySQL选择 六、Python MySQL查询在哪里…

batchnorm and relu_日本AND荷重传感器

【广州兰瑟】对射式检测方式的发和接相互对射安装&#xff0c;日本AND荷重传感器的光直接对准。当被测物挡住光束时&#xff0c;日本AND荷重传感器传感器输出产生变化以指示被测物被检测到。式是早使用的一种光电检测模式。谢谢如有传感器/仪表/模块/放大器/接线盒...咨询可搜索…

Java时间日期的处理

在 Java 中获取当前时间&#xff0c;可以使用 java.util.Date 类和 java.util.Calendar 类完成。其中&#xff0c;Date 类主要封装了系统的日期和时间的信息&#xff0c;Calendar 类则会根据系统的日历来解释 Date 对象。 Date 类 Date 类表示系统特定的时间戳&#xff0c;可…

R语言基础入门(10)之矩阵和数组

目录 1.矩阵 创建矩阵 查看矩阵的行与列数 转置 2.矩阵子集 3.矩阵行列命名 4.命名后取子集 5.逻辑下标取子集 6.正整数向量的矩阵取子集 7.返回对角线向量 8.创建单位矩阵 9.cbind() 和 rbind() 函数 10. 矩阵运算 10.1 四则运算 10.2 矩阵乘法 10.3 向量与…

foxit phantom pdf 7.3_Jpeg to Pdf Converter 3000批量将图片转为PDF的方法

Jpeg to Pdf Converter 3000是一款非常优秀的图片转PDF软件&#xff0c;该软件界面清爽美观&#xff0c;用户使用该软件&#xff0c;可以快速的将JPG图片转换为PDF文件&#xff0c;而且转换的质量非常高。我们在日常的办公生活中&#xff0c;很多时候为了使图片在传输过程中不被…

Java日期格式化

格式化日期表示将日期/时间格式转换为预先定义的日期/时间格式。例如将日期“Fri May 18 15:46:24 CST2016” 格式转换为 “2016-5-18 15:46:24 星期五”的格式。 在 Java 中&#xff0c;可以使用 DateFormat 类和 SimpleDateFormat 类来格式化日期。 DateFormat 类 DateFor…

变异系数法之matlab

目录 1.简介 2.算法原理 2.1 指标正向化 2.2 数据标准化 2.3 计算变异系数 2.4 计算权重以及得分 3.实例分析 3.1 读取数据 3.2 指标正向化 3.3 数据标准化 3.4 计算变异系数 3.5 计算权重 3.6 计算得分 完整代码 1.简介 变异系数法(Coefficient of variation …

ui automator viewer 怎么获取界面名_ui交互设计怎么样

ui交互设计怎么样&#xff0c;中天软件培训拥有实力雄厚的师资团队&#xff0c;全部是由国内行业知名专家&#xff0c;全职资深项目讲师、知名企业兼职项目导师组成。ui交互设计怎么样&#xff0c; 一般来说&#xff0c;交互设计师的工作内容就到此为止了。顾名思义&#xff0c…

变异系数法之python

目录 1.简介 2.算法原理 2.1 指标正向化 2.2 数据标准化 2.3 计算变异系数 2.4 计算权重以及得分 3.实例分析 3.1 读取数据 3.2 指标正向化 3.3 查看行数和列数 3.4 数据标准化 3.5 计算变异系数 3.6 计算权重 3.7 计算得分 完整代码 1.简介 变异系数法(Coeff…

电脑上怎么扫二维码_微信里别人发给我的二维码怎么扫

手机版&#xff1a;①打开微信打开聊天框&#xff1b;②点开二维码并长按二维码&#xff1b;③选择识别图中二维码即可。电脑版&#xff1a;①打开对话框点开二维码&#xff1b;②右击二维码选择识别图中二维码即可。

CRITIC法之matlab

目录 1.简介 2.原理解析 2.1 指标正向化及标准化 2.2 计算信息承载量 2.3 计算权重和评分 3.实例分析 3.1 读取数据 3.2 指标正向化及标准化 3.3 计算对比度 3.4 矛盾性 3.5 计算信息载量 3.6 计算权重 3.7 计算得分 完整代码 1.简介 CRITIC是Diakoulaki&#…