正则表达式速查表

正则表达式速查表

每当遇到写正则表达式处理问题时,我总会打开网页搜索一番,有时候要找很久,因此我总结了常用的元字符,以供随时查找!

基本元字符

  • |: 逻辑「或」;abc + a|b => a b
  • []: 匹配集合中的一个字符;cde + [abc] => c
  • [^]: 对集合取非;cde + [^abc] => d
  • -: 定一个区间;cde + [a-c] => c
  • \: 对下一个字符转义。a* + \* => *

数量元字符

  • .: 可以匹配任意字符一次;abc + . => a
  • +: 可以重复匹配一次或多次;aab + a+ => aa
  • +?: + 的懒惰版本;aab + a+ => a
  • *: 可以重复匹配零次或多次;aab + a* => aa
  • *?: * 的懒惰版本;aab + a*? => ''
  • ?: 可以重复匹配零次或一次(即子表达式是可选的);aab + a? => a
  • {a}: 可以重复匹配a次;aab + a{2} => aa
  • {b,c}: 可以重复匹配b到c次;aab + a{1,3} => aa
  • {d,}: 可以重复匹配大于等于d次;aab + a{1,} => aa
  • {d,}?: {d,} 的懒惰版本。aab + a{1,}? => a

位置元字符

  • ^ or \A: 匹配字符串的开头;
  • $ or \Z: 匹配字符串的结尾;
  • \<: 匹配单词的开头;
  • \>: 匹配单词的结果;
  • \b: 匹配单词边界(boundary);
  • \B: 匹配非单词边界。

特殊元字符

  • \d: 任意一个数字字符(等价于 [0-9]);
  • \D: 任意一个非数字字符(等价于 [^0-9]);
  • \w: 任意一个数字字母下划线字符(等价于 [a-zA-Z0-9_]);
  • \D: 任意一个非数字字母下划线字符(等价于 [^a-zA-Z0-9_]);
  • \s: 任意一个空白字符(等价于 [\f\n\r\t\v]);
  • \S: 任意一个非空白字符(等价于 [^\f\n\r\t\v]);
  • \f: 换页符;
  • \n: 换行符;
  • \r: 回车符;
  • \t: 制表符;
  • \v: 垂直制表符;
  • \0: 匹配一个八进制数字;
  • \x: 匹配一个十六进制数字;
  • \c: 匹配一个控制字符;
  • [\b]: 退格字符;

回溯引用和前后查找

  • (): 可以放子表达式在括号中(子表达式可以嵌套,理论上来说没有上限,但建议适可而止);
  • (?:): 只分组,但不捕获;
  • \1: 匹配第1个子表达式;
  • ?=: 向前查找(从左到右);
  • ?<=: 向后查找(从右到左);
  • ?!: 负向前查找(从左到右);
  • ?<!: 负向后查找(从右到左);
  • ?(): 条件 if then;
  • ?()|: 条件 if then else。

参考

评论