匹配位置:
\b:单词的开头或者结束,单词的分界处
^:匹配字符串的开始
$:匹配字符串的结束
匹配字符
.:匹配除换行符以外的任意字符
\d:匹配一位数字
\s:匹配任意空白符,包括空格,tab制表符,换行符,中文全角空格
\w:匹配字母或数字或下划线或汉字等
字符转义
\:用来转义特定字符,例如\\,\/,\{,\},\(,\),\.,\*
重复
*:数量,匹配*前面的内容连续使用任意次(可以是0次)
+:匹配+前面的内容1次或者多次(必须有1次)
?:重复0次或1次
{n}:重复n次
{n,}:重复n次或者更多次
{n,m}:重复n到m次(不能少于n次,不能多于m次)
匹配字符范围
[0-9]:类似\d,匹配0-9中的任意一位数字
[a-zA-Z]:类似\w(只有英文的话),匹配a-z,A-Z之间的任意一个字符
[aeiou]:匹配任意一个英文元音字母
[.?,!]:匹配标点符号(.或?或,或!)
分支条件
|:不同规则用|隔开,例如:0\d{2}|\d{3}[- ]?\d{8}
分组
():分组用来重复多个字符的匹配次数,例如:(\d{1,3}\.){3}\d{1,3}中(\d{1,3}\.)整个分组重复3次
反义
\W:匹配任意不是字母、数字、下划线、汉字的字符
\S:匹配任意不是空白符的字符
\D:匹配任意非数字的字符
\B:匹配任意不是单词开始或结束的位置
[^x]:匹配除了x以外的任意字符
[^aeiou]:匹配除了aeiou这几个字符以外的任意字符
后向引用
后向引用:用于重复搜索前面某个分组匹配的文本。
常用分组语法:
捕获:
(exp):匹配exp,并捕获文本到自动命名的组里
(?<name>exp):匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
(?:exp):匹配exp,不捕获匹配的文本,也不给此分组分配组号
零宽断言
(?=exp):匹配exp前面的位置
(?<=exp):匹配exp后面的位置
(?!exp):匹配后面跟的不是exp的位置
(?<!exp):匹配前面不是exp的位置
注释
(?#comment):这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读
贪婪与懒惰
当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。以这个表达式为例:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。
懒惰(非贪婪)限定符
*?:重复任意次,但尽可能少重复
+?:重复一次或更多次,但尽可能少重复
??:重复0次或1次,但尽可能少重复
{n,m}?:重复n到m次,但尽可能少重复
{n,}?:重复n次以上,但尽可能少重复












网友评论