用来匹配字符串,针对文本内容的过滤工具里所必须的。——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:词尾锚定,用于单词的最右侧
- \
:匹配整个单词
分组:将一个或者多个字符捆绑在一起,当作一个字符使用
区别:
- 将次数匹配位置锚定和分组中\去掉了
- 或:|
