正则表达式regex

Posted qimingming

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式regex相关的知识,希望对你有一定的参考价值。

元字符

字符描述字符描述
转义符    
d digit匹配数字=[0-9] D 非数字
w word匹配字母、数字、下划线。等价于‘[A-Za-z0-9_]‘ W 非字母数字下划线
s 空格,换行符,制表符 S 非空白
table专门表示制表符    
专门表示换行符    
. 除了换行符之外的任意内容    
[] 字符组 [^] 非字符组
^ 以……开头 $ 以……结尾
| 或(逻辑单位) abc|ab 如果两个规则有重叠,长在前,短在后
() 分组:把一部分正则规定为一组 限定|的作用域 限定一组正则的量词约束

量词:约束字符出现的次数

量词描述
{n} 前面字符只出现n次数
{n,} 至少出现n次
{n,m} 至少出现n次,至多出现m次
匹配0次或1次 ?前面的字符出现0次或1次都行
+ 匹配1次或多次
* 匹配0次或多次
d(.d+)? 小数或整数

如图:

 

 

技术图片

 

默认贪婪匹配,总是在符合量词条件的范围内尽可能多的匹配。【回溯算法:找到结尾,再回找要求的条件】

非贪婪匹配(惰性匹配):总是匹配符合条件范围内尽量小的

在量词后加?
+?尽量少的取,
+?3   一旦遇到3则匹配结束

元字符 量词 ?x
表示按照元字符规则在量词的范围内匹配,一旦遇到x就停止

#重点
.*?x 匹配任意内容的任意多次,一旦遇到x则停止 
先判断是否是x,如果是就结束,如果不是,则继续

分组

分组命名
      语法:(?P<组名>正则表达式)

引用分组
     语法:(?P=组名)
   引用分组,表示这个组中的内容与之前匹配的内容完全一致
1,匹配第一个分组中的内容,使用时需要在字符串前加r转义

?的作用

1.量词:
    ?,匹配0次或1次
2.非贪婪匹配,?放在量词后
    元字符量词?————>在量词范围内,尽量少的取
    .*?x 匹配任意内容的任意多次,一旦遇到x则停止
3.分组
    分组命名:(?P<组名>)
    引用分组:(?P=组名)
    取消分组优先:(?:正则表达式)

以上是关于正则表达式regex的主要内容,如果未能解决你的问题,请参考以下文章

java 字符串替换

如何从RegEx分组中“排除”空白区域?

不需要boost::regex库的能进行正则表达式的代码?

YouTube Vimeo 视频 ID 来自嵌入代码或来自带有 PHP 正则表达式 RegEx 的 URL

正则表达式帮助 - Wordpress (search-regex)

boost和c++11的正则表达式regex和线程thread对比