Notes on Regular Expression

 

本文总结了正则表达式的语法,以供日后快速回忆;以及学习及练习资源。


[toc]

相关链接

语法总结

类型 语法 说明 例子
元字符1 . 点运算符:点匹配任意单个字符,除了换行符  
元字符 [] 字符集:匹配方括号内的任意字符 [ab]匹配ab[a-z]匹配所有英文小写字符
元字符 [^ ] 否定字符集:匹配除了方括号里的任意字符 [^ab]匹配除ab以外的字符
元字符 * 重复次数:匹配>=0个重复的在*前的字符 a*b可以匹配b, ab, aab, aaab
元字符 + 重复次数:匹配>=1个重复的在+前的字符 a+b可以匹配ab, aab, aaab
元字符 ? 重复次数:标记?前的字符可出现0或1次 a?b可以匹配b, ab
元字符 {n,m} 重复次数:匹配k个大括号前的字符,$n\le k\le m$  
元字符 (xyz) 匹配与xyz完全相等的字符串 (ab)+可以匹配ab, abab
元字符 | 或运算符:匹配符号前或后的字符 (ab|cd)可以匹配ab, cd
元字符 \ 转义字符:用于匹配保留字符 保留字符[](){}.*+?^$\|
元字符 ^ 锚点:标志行首,只匹配行首出现的2 ^a只匹配行首的a
元字符 $ 锚点:标志行尾2 a$只匹配行尾的a
简写字符集3 \w 匹配所有字母、数字、下划线 等于[a-zA-Z0-9_]
简写字符集 \W 匹配所有非字母数字下划线 等于[^\w][^a-zA-Z0-9_]
简写字符集 \d 数字 等于[0-9]
简写字符集 \D 非数字 等于[^0-9]
简写字符集 \s 空格,匹配所有空格字符 等于[\t\n\f\r\p{Z}]4
简写字符集 \S 非空格 等于[^\s]
零宽度断言5 ?= 正先行断言(Positive Lookahead) a(?=b)只匹配abcdad中的第一个a(因为它后面跟着b
零宽度断言 ?! 负先行断言(Negative Lookahead) a(?!b)只匹配abcdad中的第二个a(因为它后面没跟b
零宽度断言 ?<= 正后发断言(Positive Lookbehind) (?<=a)b只匹配abcdcba中的第一个b(因为它前面有a
零宽度断言 ?<! 负后发断言(Negative Lookbehind) (?<!a)b只匹配abcdcba中的第二个b(因为它前面没有a
标志6 /.../i 大小写不敏感,忽略大小写 /The/i可以匹配The, the, tHe
标志 /.../g 全局搜索,返回所有匹配的结果7  
标志 /.../m 多行2  
贪婪与惰性 ? 默认使用贪婪匹配,使用?放在重复次数的后面,变成惰性匹配 a+匹配aaaa中的aaaaa+?匹配aaaa中的每一个a

类型解释:

  1. 元字符 (Meta Characters): 元字符不代表他们本身的字面意思,他们有特殊的含义 

  2. 不加标志m时锚点只匹配全文的开始和结尾,加m匹配行首和行尾  2 3

  3. 简写字符集 (Shorthand Character Sets): 常用的字符集的简写 

  4. \p{Z} 匹配任意种类的空格和不可见的separator 

  5. 零宽度断言 (Lookarounds): 用于匹配模式,但不包含在匹配结果中 

  6. 标志 (Flags): 也称为模式修正符(Modifiers),匹配的设置 

  7. 不加标志g只返回匹配的第一个结果,加g返回匹配的所有结果