正则简单语法参考

本文参照 正则表达式30分钟入门教程 来组织了一份简单地正则 “语法” 手册,以便参考之用。文章中的“反向引用” 这一节开始的内容就没有摘录了,需要的时候再去查阅吧。

基本匹配方式(特殊符号)

匹配单词的开始与结束

  1. \b:匹配单词的开始或结束;举例:in 会找出所有的 in,包括单词中的,比如 point中的 in,而\bin\b只会匹配 in 这个单词,point 就不会被匹配到。
  2. ^:匹配字符串的开始;
  3. $:匹配字符串的结束;

^$ 可以组合使用,比如 ^\d{5,12}$ 表示匹配只有5位到12位数字的字符串,如果没有^$\d{5,12}则会匹配到包含5位到12位数字的字符串(比如wq1234567,包含了2个字母7个数字)。

匹配字符

  1. .:匹配到除换行符以外的任意字符;
  2. \w:匹配到字母或数字或下划线或汉字;
  3. \d:匹配数字;
  4. \s:匹配任意的空白符;

匹配重复

  1. *:重复 0 次或多次;比如 ^\d*$ 表示这个字符串包含连续的 0 个或多个数字;
  2. +:重复 1 次或多次;比如 ^\d+$ 表示这个字符串包含至少 1 个连续的数字;
  3. ?:重复 0 次或 1 次;比如 ^\d?$ 表示这个字符串包含 0 个或 1 个连续的数字;
  4. {n}:重复 n 次;比如 ^\d{3}$ 表示这个字符串包含 3 个连续的数字;
  5. {n,}:重复 n 次或更多次;比如 ^\d{3,}$ 表示这个字符串包含至少 3 个连续的数字;
  6. {n,m}:重复 n 次到 m 次; 比如 ^\d{3,8}$ 表示这个字符串包含至少 3 个并且至多 8 个连续的数字;

指定匹配字符集合

  1. [集合][集合] 会匹配到 [] 中的任意元素;比如你想匹配元音字母(a, e, i, o ,u),那么你只需要在 []中列出即可:[aeiou],这样就会(一次)匹配到一个元音字母。再比如[aeiou]+ 就表示会匹配到至少 1 个连续的元音字母。

分支条件

  1. |:正则会先匹配 | 符号左边的规则,如果没有匹配上,就会去匹配 | 符号右边的规则。

举个栗子:\d{5}-\d{4}|\d{5} 会匹配到用-隔开的9位数字(前5后4,如12345-6789)或者纯粹的5位数字(如12345)。但是如果你把 |符号de 左右互换,得到 \d{5}|\d{5}-\d{4},那么就只会只会得到5位的数字(或者是-隔开的9位数字的前5位)。

分组

  1. ():有时候我们会需要重复匹配多个字符,那么我们只需要将这几个字符组成一个分组即可,使用 () 符号。

举个栗子:比如我们想匹配至少一次的 \d\+\d(即 数字 + 数字 ),那么我们可以使用 (\d\+\d)+,其中 \d 之间的加号需要用 \ 来转义一下,不加的话会被识别成 +(即至少重复一次)。

反义

  1. \W:匹配任意不是字母、数字、下划线、汉字的字符;

  2. \S:匹配任意不是空白符的字符;

  3. \D:匹配任意不是数字的字符;

  4. \B:匹配任意不是单词开头或者结尾的字符;

    很明显这几个就是相应的元字符的大写。

    除此之外,还能通过与加了 ^ 的集合符号 [^] 一起使用,表除了集合里的这些字符之外的字符。

  5. [^x]:除了 x 以外的任意字符;

  6. [^aeiou]:除了元音字母 a、e、i、o、u 以外的任意字符;

再举个栗子: <a[^>]+>:匹配用尖括号括起来且必须以 a 开头的至少两位长度(除括号外)的字符串。

常用正则参考

这里列举几个文章,里面罗列了很多常用的正则表达式,平时也可以当成练习来玩玩。

  1. 最实用的正则表达式整理
  2. 知道这20个正则表达式,能让你少写1,000行代码
  3. 比较常用的几个正则表达式

正则测试(在线)

  1. Regex Pal:能在给定的文字中找出正则匹配的字符串;
  2. Regexper:能将给定的正则解析,以程序设计语言图(railroad diagrams)的形式展示出来。
文章目录
  1. 基本匹配方式(特殊符号)
    1. 匹配单词的开始与结束
    2. 匹配字符
    3. 匹配重复
    4. 指定匹配字符集合
    5. 分支条件
    6. 分组
    7. 反义
  2. 常用正则参考
  3. 正则测试(在线)
|