用来匹配字符串,针对文本内容的过滤工具里所必须的。——vim 、文本三剑客都会使用到正则表达式

基本的正字表达式

  • 字符匹配
    • 点:匹配任意单个字符
    • 中括号:匹配指定范围内任意单个字符
    • [^]:匹配指定范围外任意单个字符
    • [c1-c2]:匹配指定范围内的单个字符
    • [:alnum:]:字母和数字字符
    • [:apha:]:字母字符
    • [:ascii:]:ASCII字符
    • [:blank:]:空格或者制表符
    • [:cntrl:]:控制字符
    • [:digit:]:数字字符
    • [:graph:]:非控制字符、非空格字符
    • [:lower:]:小写字符
    • [:upper:]:大写字符
    • [:print:]:可打印字符
    • [:punct:]:标点符号字符
    • [:space:]:空白字符,包括制表符
    • [:sdigit:]:十六进制数字
  • 次数匹配
    • *:匹配前面字符任意次数
    • .* :匹配任意长度的字符
    • \?:匹配前面的字符零次或一次
    • +:匹配前面的字符一次或多次
    • { n }:指定前面的字符匹配固定的m次数
    • {m,n}:匹配前面的字符至少m次至多n次
      • {0,n}:至多n次
      • {m,}:至少m次
  • 位置锚定
    • ^:行首锚定
    • $:行尾锚定,用于模式的最右侧
    • ^patter$:用与模式匹配整行
    • ^$:空行
    • \<或者\b:词首锚定,用于单词模式的最左侧
    • >或者\b:词尾锚定,用于单词的最右侧
    • \:匹配整个单词
  • 分组:将一个或者多个字符捆绑在一起,当作一个字符使用

    • (ab){4}:使用分组的方式将ab作为一组匹配四次
    • 引用:分组括号中的模式匹配到的内容会被正则表达式引擎记录到内部变量,这些总变量命名方式为\1 \2 \3,分别表示第一个分组第二个分组。

      扩展的正则表达式

  • 区别:

    • 将次数匹配位置锚定和分组中\去掉了
  • 或:|