正则表达式
组成
元字符+普通字符
普通字符
大小写字母、数字、标点符号及一些其他符号
元字符
在正则表达式中具有特殊意义的专用字符
常用的元字符
- \:转义字符,!、\n等
- ^:匹配字符串开始的位置
- 例: ^a、^the、^#
- $:匹配字符串结束的位置
- 例: word$
- .:匹配除\n之外的任意的一个字符
- 例: go.d、g...d
- *:匹配前面子表达式0次或者多次
- 例:goo*d、go.*d
- [list]:匹配list列表中的一个字符
- 例: go[ola]d,[abc]、[a-z]、[a-z0-9]
- [^list]:匹配任意不在list列表中的一个字符
- 例: [^a-z]、[^0-9]、[^A-Z0-9]
- {n,m}:匹配前面的子表达式n到m次,有{n}、{n,}、{n,m}三种格式
- 例:go{2}d、go{2,3}d、go{2,}d
{n}
:匹配前面的子表达式恰好 n 次。{n,}
:匹配前面的子表达式至少 n 次,可以无限多次。{n,m}
:匹配前面的子表达式至少 n 次,但不超过 m 次。
- [[:punct:]] → 匹配标点符号字符
- 例如[[:punct:]] → :
扩展元字符
- +:匹配前面子表达式1次以上
- 例: go+d,将匹配至少一个o
- ?:匹配前面子表达式0次或者1次
- 例: go?d,将匹配gd或god
- ():将括号中的字符串作为一个整体
- 例:(xyz)+,将匹配 xyz 整体1次以上,如xyzxyz
- |:以或的方式匹配字条串
- 例1: good|food,将匹配good或者food
- 例2: g(oo|la)d,将匹配good或者glad
表示一类字符的原子
- \d:表示一个十进制的数字 [0-9]
\D:表示非数字 - \w:表示一个字 [0-9a-zA-Z_]
\W:表示除[0-9a-zA-Z_]之外的字符 - \s:表示一个空白字符(空格,tab,换页符等)
\S:表示一个非空白字符 - \i: 表示不区分大小写