1、特珠代码:
例子:
注意:"+" 是和 "*" 类似的特殊代码,不同的是*代表重复任意次(可能是0次),而+则代表重复1次或更多次。
2、反义
- \W表示匹配任意不是字母和数字的字符
- \S表示匹配任意不是空白符的字符
- \S+表示不包含空白符的字符串。
- \D表示匹配任意非数字的字符
- \B表示匹配不是单词开头或结束的位置
- [^x]表示匹配除了x以外的任意字符
- [^wsyht]表示匹配除了wsyht字母以外的任意字符
- <a[^>]+>表示用尖括号括起来的以a开头的字符串,再匹配除了>以外的其它字符
3、字符转义:
转义前 转义后
- \.->.
- \*->*
- \\->\
- \^->^
- \#->#
- \(->(
- \)->)
4、重复
- .表示除了换行符之外的其它字符
- *表示前边的内容可以重复任意次,可能是0次
- .*表示任意个字符
- +表示重复一次或更多次
- ?表示零或一次
- {n}表示重复n次
- {n,}表示重复n次或更多次
- {n,m}重复n次到m次
- 例子;
- Windows\d+匹配Windows后面跟1个或更多数字
- 13\d{9}匹配以13后面跟9个数字(中国的手机号)
- ^\w+匹配一行的第一个单词(或整个字符串的第一个单词,具体代表哪个意思得看选项设置)
5、字符匹配:
- [abcde]匹配a、b、c、d、e任意一个字母
- [!@#$%]匹配!、@、#、$、%任意一个字符
- [0-9]匹配0到9任意一位数字,和\d含意一致
- [a-zA-Z0-9]匹配任意一位数字或字母,不分区分大小写,和\w含意一致,和[a-zA-Z]含意一致
- [^a-z]范围内取反
- [#_-]匹配#_-的行
- [#-_]匹配从#到_的行
- [?!_-]范围内匹配字符
- ^[^a-z]不以小写字母任意开头的行
- 匹配MAC地址的正则表达式
- 00:0c:29:C1:C1:FF
- 0123456789ABCDEF
- abcdef
- [0-9a-fA-F]{2}:[0-9a-fA-F]{2}:[0-9a-fA-F]{2}:[0-9a-fA-F]{2}:[0-9a-fA-f]{2}:
- [0-9a-fA-F]{2}
- 可转换成如下:
- grep-E'([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}'ifcfg-eth0
6、替换(多项匹配)
- 0\d{2}-\d{8}|0\d{3}-\d{7}匹配两种以"-"分隔的电话号码:一种是三位区号,8位本地号(如010-12345678),一种是4位区号,7位本地号(0376-2233445)
- \(0\d{2}\)[-]?\d{8}|0\d{2}[-]?\d{8}匹配3位区号的电话号码,其中区号可以用小括号括起来,也可以不用,区号与本地号间可以用连字号或空格间隔,也可以没有间隔
- \d{5}-\d{4}|\d{5}匹配美国的邮政编码。美国邮编的规则是5位数字,或者用连字号间隔的9位数字
- Windows98|Windows2000|WindosXP匹配Windows98或Windows2000或WindosXP
7、分组
用小括号来指定子表达式(也叫做分组)
获取IP地址分组展示:
- ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
- IP址第1、2、3、4列可能出现的三位数
- 21[0-9]
- 22[0-9]
- 23[0-9]
- 24[0-9]
- 或
- 251,252
- 253
- 254
- 255
- 或
- [01][0-9][0-9]+
8、位置指定
- (?=exp)匹配exp前面的位置
- (?<=exp)匹配exp后面的位置
- (?!exp)匹配后面跟的不是exp的位置
- (?<!exp)匹配前面不是exp的位置
- 例子:
- (?=wsyht)匹配wsyht前面的位置
- (?<=wsyht)匹配wsyht后面的位置
- \d{3}(?!\d)匹配三位数字,而且这三位数字的后面不能是数字
- (?<![a-z])\d{7}匹配前面不是小写字母的七位数字