正则表达式速查表

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

基本元字符

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

数量元字符

  • .: 可以匹配任意字符一次;abc + . => a
  • +: 可以重复匹配一次或多次;
  • +?: +的懒惰版本;
  • *: 可以重复匹配零次或多次;
  • *?: * 的懒惰版本;
  • ?: 可以重复匹配零次或一次;
  • {a}: 可以重复匹配a次;
  • {b,c}: 可以重复匹配b到c次;
  • {d,}: 可以重复匹配大于等于d次;
  • {d,}?: {d,}的懒惰版本。

位置元字符

  • ^ 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。

参考

评论