【正则表达式】
正则表达式:Regular Expression(RE),是一种字符匹配模式,使用元字符来表达某一类的字符串。
位置标记
正则元字符 | 含义 | 举例 |
---|---|---|
^ | 行首定位符 | ^aux能够匹配以aux起始的行 |
$ | 行尾定位符 | aux$能够匹配以aux结尾的行 |
标识符
正则元字符 | 含义 | 举例 |
---|---|---|
A字符 | 正则表达式必须匹配该字符 | A能够匹配字符A |
. | 匹配任意一个字符 | hack. 能够匹配hackl和hacki,但不能匹配hackl2或是hackil这种,它只能匹配单个字符 |
[] | 匹配中括号内的任意一个字符,中括号内可以是一个字符组或是字符范围 | coo[kl]能够匹配cook或是cool,[0-9]匹配任意单个数字 |
[^] | 匹配不在中括号内的任意一个字符,中括号内可以是一个字符组或是字符范围 | 9[^01]能够匹配92和93等,但是不匹配91和90;A[^0-9]匹配A以及随后除数字外的任意单个字符 |
[:space:] | 匹配空白字符,包括空格,tab | sed ‘s/[[:space:]]//g’ file |
[:digit:] | 任意单个数字 | |
[:lower:] | 任意单个小写字母 | |
[:upper:] | 任意单个大写字符 | |
[:alpha:] | 任意单个字母 | |
[:alnum:] | 任意单个字母和数字 | |
[:blank:] | 任意单个空格和tab | |
[:punct:] | 任意单个标点符号 | |
[:cntrl:] | 任意单个控制符 | |
[:graph:] | 任意单个能显示的符号 | |
[:print:] | 任意单个可打印符号 | |
[:xdigit:] | 任意单个十六进制字符 |
数量修饰符
正则元字符 | 含义 | 举例 |
---|---|---|
? | 匹配之前的项1次或是0次 | colou?r能够匹配color或是colour |
+ | 匹配之前的项1次或是多次 | rollno-9+能够匹配rollno-9或是rollno-9… |
* | 匹配之前的项0次或是多次 | co*l能够匹配cl、col和coo…l |
{n} | 匹配之前的项n次 | [0-9]{3}能够匹配任意的三位数 |
{n,} | 之前的项至少需要匹配n次 | [0-9]{2,}能够匹配任意一个两位数或是更多位数 |
{n,m} | 之前的项所必须匹配的最小次数与最大次数 | [0-9]{2,5}能够匹配两位数到五位数之间的任意一个数字 |
其他
正则元字符 | 含义 | 举例 |
---|---|---|
() | 将括号内的内容视为一个整体 | ma(tri)?x能够匹配max或matrix |
| | 指定了一种选择结构,可以匹配 | 两边任意一项 | oct (1st | 2nd)能够匹配oct 1st或是oct 2nd |
\ | 转义字符 | a\.b能够匹配a.b,但不能匹配ajb,因为 \ 忽略了 . 的特殊意义 |
root@bras-01:/tmp# cat test.txt
aabbcc115599
ccddmm123456789
www.12356abc.com
www.baidu.com
www.12306.com
192.168.1.1
192.168.1.2
192.168.1.255
192.168.1.254
root@bras-01:/tmp# grep ^www /tmp/test.txt
www.12356abc.com
www.baidu.com
www.12306.com
root@bras-01:/tmp# grep com$ /tmp/test.txt
www.12356abc.com
www.baidu.com
www.12306.com
root@bras-01:/tmp# grep -E ^[a-z]+\.[0-9]+\.[a-z]+$ /tmp/test.txt
www.12306.com
root@bras-01:/tmp# grep -E ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ /tmp/test.txt
192.168.1.1
192.168.1.2
192.168.1.255
192.168.1.254