Skip to content

正则表达式

正则表达式是一个描述字符排列或模式匹配的规则,我们可以利用它来制定自己的规则,获取到我们想要的结果

分类

  • 基本正则表达式:Basic Regular Expression 又叫 Basic RegEx 简称 BREs,在基本正则表达式中作用的元字符为:^$.[]*

  • 扩展正则表达式:Extended Regular Expression 又叫 Extended RegEx 简称 EREs,其为在基本正则表达式上新增了 (){}?+ 、等元字符元字符,使得正则表达式更加简洁易用。

原字符

  • 通用 POSIX 原字符

    • [:alnum:] 字母数字[a-z A-Z 0-9]
    • [:alpha:] 字母[a-z A-Z]
    • [:blank:] 空格或制表键
    • [:cntrl:] 任何控制字符
    • [:digit:] 数字 [0-9]
    • [:graph:] 任何可视字符(无空格)
    • [:lower:] 小写 [a-z]
    • [:print:] 非控制字符
    • [:punct:] 标点字符
    • [:space:] 空格
    • [:upper:] 大写 [A-Z]
    • [:xdigit:] 十六进制数字 [0-9 a-f A-F]
  • 特殊字符,在扩展正则表达式中加上 \ 则被认为其具有特殊含义:

    • \w 匹配任意数字和字母,等效[a-zA-Z0-9_]
    • \W\w相反,等效[^a-zA-Z0-9_]
    • \b 匹配字符串开始或结束,等效\<\>
    • \s 匹配任意的空白字符
    • \S 匹配非空白字符

匹配

字符匹配

  • . 匹配任意单个字符
  • [] 匹配中括号范围内的任意单个字符
  • ^ 对匹配的字符取反
  • | 匹配提供的两个字符

数量匹配

  • * 匹配前面字符 任意次,可以0个、1个、也可以无数个
  • ? 匹配前面字符 0次或者1次
  • + 匹配前面字符 至少1次
  • {m,n} 匹配前面字符 最少m次,最多n次
  • .* 匹配任意字符任意次数

位置锚定

  • ^ 行首锚定,放置在模式最左边
  • $ 行尾锚定,放置在模式最右边
  • \<\b 词首锚定,匹配单词词首
  • \>\b 词尾锚定,匹配单次词尾

分组引用

  • () 将括号内的匹配存入内存,之后可以通过\1 \2引用

贪婪模式

通过在 *+? 限定符之后放置 ?,该表达式从"贪婪"表达式转换为"非贪婪"表达式或者最小匹配。