正则表达式符号汇总

正则表达式

字符类

字符 含义 举例
. 匹配任意一个字符 abc. -> abcdabc6
[] 匹配[]中的任意一个字符 [abc]d -> adbccd
- []内表示字符范围 [0-9a-fA-F]-> 一位16进制数
^ 位于[]内的开头,匹配除括号以外的任意一个字符 [^xy]->匹配除x y外的任意一个字符
[[:xxx:]] grep工具预定义的一些命名字符类 [[:alpha::]] -> 匹配一个字母 [[::dight::]] -> 匹配一个数字

数量限定符

字符 含义 举例
? 紧跟在其前面的单元应匹配零次或一次 [0-9]?\.-> 匹配0.0、1.7、.6等
+ 紧跟在其前面的单元应匹配一次或多次 [a-zA-Z0-9_.-]+@[a-zA-Z0-9_.-]\.[a-zA-Z0-9_.-]+ -> 匹配email地址
* 紧跟在其前面的单元应匹配零次或多次 [0-9][0-9]* -> 匹配至少一位数字 ,等价于[0-9]+
{N} 紧跟在其前面的单元应精确匹配N次 [1-9][0-9]{2} -> 匹配从100到999的三位整数
{N,} 紧跟在其前面的单元应匹配至少N次 [1-9][0-9]{2,} -> 匹配大于等于三位数的整数
{,M} 紧跟在其前面的单元应匹配至多M次 [0-9]{,1} -> 最多匹配0-9之间的一个整数,相当于[0-9]?
{N,M} 紧跟在其前面的单元应匹配至少N次,至多M次 [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1.3}\.[0-9]{1,3} -> 匹配点分十进制IP地址

位置限定符

字符 含义 举例
^ 匹配行首的位置 ^Content -> 匹配位于一行开头的Content
$ 匹配行末的位置 ;$ -> 匹配位于一行结束的; ^$ -> 匹配空行
\< 匹配单词开头的位置 \ -> 匹配 th...
\> 匹配单词结尾的位置 p\> -> 匹配 ...p
\b 匹配单词开头或结尾的位置 \bat -> 匹配at......at
\B 匹配非单词开头或结尾的位置 \Bat -> 匹配...at...

特殊符号

字符 含义 举例
\ 转义字符,普通字符转义为特殊字符,特殊字转义为普通字符 普通字符<写成\<表示开头位置
() 将正则表达式的一部分括起来组成一个单元,可以对整个单元使用数量限定符 ([0-9]{1,3}\.){3}[0-9]{1,3} -> 匹配正则表达式
| 连接两个子表达式,表达或的关系 n(o|either) -> 匹配 noneither

其他普通字符集及其替换

符号 替换正则 匹配
\d [0-9] 数字字符
\D [^0-9] 非数字组合
\w [a-zA-Z0-9_] 数字字母下划线
\W [^\w] 非数字字母下划线
\s [\r\t\n\f] 表格,换行等空白区域
\S [^\s] 非空白区域

贪婪模式与非贪婪模式

  1. 贪婪模式:正则表达式匹配时,会尽量多的匹配符合条件的内容
  2. 非贪婪模式:正则表达式匹配时,会尽量少的匹配符合条件的内容,也就是说,一旦发现匹配符合要求,立马就匹配成功,而不会继续匹配下去(除非有g,开启下一组匹配)

零宽断言

  1. 所谓断言,是用来声明一个应该为真的事实。在正则表达式中,只有当断言为真时才会继续进行匹配。

  2. 零宽断言:像用于查找某些内容之前或者之后的东西,其中一些特殊字符如“\b、^、$”等用于指定一个位置,这个位置应满足一定的条件。

  3. 分类

    1. 零宽度正预测先行断言(?=exp)

      它断言自身出现的位置之后能匹配的表达式exp。如:\b\w+(?=ing\b),表示匹配以ing结尾的单词的前面的部分(除ing以外的部分)。当我们要查找I'm singing while you're dancing.时,它会匹配singdanc

    2. 零宽度正回顾后发断言(?>=exp)

      它断言自身出现的位置的前面能匹配的表达式exp。如:(?<=\bre)\w+\b会匹配以re开头的单词的后半部分(除er以外的部分),例如:在查找reading a book时,它匹配ading

你可能感兴趣的:(Go语言,C++,函数,正则表达式,后端)