常用的元字符:
\b 代表的是单词的开始或者结尾 因为开始的单词是begin
. 代表的是除了换行符以外的所有字符
\w 匹配任意的字母数字或者下划线或者汉字 word
\s 匹配任意的空白符 包括: 空格,制表符,换行符,以及中文的全角空格 space
\d 匹配任意的数字 digit
^ 匹配字符串的开始
$ 匹配字符串的结束
常用的限定符:
* 重复0到多次
+ 重复至少一次
? 重复最多一次
{n} 重复n次
{n,} 重复至少n次
{n,m} 重复n到m次
常用的反义元字符
\W 匹配非字母,数字,下划线,汉字
\S 匹配任意不是空白符的字符
\D 匹配任意非数字的字符
\B 匹配不是单词开头或结尾的位置
[^x] 匹配除了x意外的任意字符
[^aeiou] 匹配除了aeiou这几个字母之外的任意字符
分组捕获:
(exp) 匹配exp,并捕获文本到自动命名的组里面
(?<name>exp) 匹配exp,并捕获文本到名称为name的组里面,也可以写成(?'name'exp)
(?:exp) 匹配exp,不捕获匹配的文本,也不给此组分配组号
零宽断言: 为什么称它们为零宽断言呢?因为这个地方只是匹配一个位置,而不消耗字符宽度,或者说字符宽度为0
所以叫做零宽断言
(?=exp) 匹配exp前面的位置
(?<=exp) 匹配exp后面的位置
(?!exp) 匹配后面跟的不是exp的位置
(?<!exp) 匹配前面不是exp的位置
注释
(?#comment)
懒得限定符:
*? 重复任意次,但是尽可能少重复
+? 重复一次或者更多次,但是尽可能少重复
?? 重复0次或者1次,但是尽可能少重复
{n,m}? 重复n到m次,但是尽可能少重复
{n,}? 重复至少n次,但是尽可能少重复