1、正则表达式
符号 | 含义 |
---|---|
* | 匹配0个或多个*之前的那个普通字符 |
. | 匹配任意一个字符 |
^ | 匹配行首,当放在[] 中表示取反 |
$ | 匹配行尾巴 |
[] | 匹配集合中的任意一个字符 |
\ | 转义符,屏蔽一个元字符的特殊含义 |
\<\> | 精确匹配某个符号 |
\{n\} | 匹配前面字符出现n次 |
\{n,\} | 匹配前面字符至少出现n次 |
\{n,m\} | 匹配前面字符出现n~m次 |
示例
*
号:用于匹配前面一个普通字符0次或多次重复
hel*O #可以匹配helo\hello\helllo等
.
号:用于匹配任意一个字符
he..o #hexxo he*\o .可以匹配任意一个字符,因此也可以匹配一个空格 'he o'也可以匹配
^
号:用于匹配行首,表示行首的字符是^后面的那个字符
^hello #可以匹配hello开头的行
^...o #匹配任意字符开头,中间两个任意字符,最后是0的字符串
$
号:用于匹配行尾,表示行位的字符是$前面的那个字符
liuck$ #匹配以liuck结尾的所有行
匹配空行的方法
^$ #表示匹配空行
[]
号:用于匹配字符集合,该符号支持穷举法列出字符集合的所有元素,也支持使用"-"符号表示字符集合范围
[012345] #匹配一个字符集合,只要该字符集合中含有012345任何一个字符即可匹配上
[0-9] #支持集合范围,匹配数字
[a-z] #匹配所有小写
[A-Z] #匹配所有大写
当^号放到[]符号中就不在表示匹配行首了,而是表示取反符号、
[^b-m] # ^表示不再匹配b-m范围内的所有小写字符
\
转义符号:用于屏蔽元字符的特殊含义,比如匹配.
就应该用\.
。这样.
号就不再表示匹配任意一个字符了\<\>
:精准匹配符号,如\<the\>
会精准匹配the单词,而不匹配包含the的单词,如不会匹配到them、there等\{\}系列符号
jo\{3\}b #匹配字符o 3次
jo\{3,\}b #匹配o字符至少3次
jo\{3,6\}b #匹配字符o 3~6次
[a-z]\{5\} #精确匹配5个小写英文字符
2、正则表达式的扩展
awk和perl等linux工具还支持正则表达式扩展出来的一些元字符。
符号 | 意义 |
---|---|
? | 匹配0个或1个?之前的那个普通字符 |
+ | 匹配1个或多个+号之前的那个普通字符 |
() | 表示一个字符集合与| 搭配使用 |
| | 表示或,匹配一组可选的字符,搭配() 使用 |
示例
?
号:匹配?之前的那个字符0次或1次
hel?0 #匹配l 0次或1次 即匹配helo、hello
+
号:匹配+号之前的那个字符1次或多次。与*不同的是 *号可以匹配0次,+号至少匹配1次
s+eu #匹配s一次或多次,sseu ssseu sssseu
()
号 | 号:匹配一组可选择字符
a(a|b|c)c #匹配()中的a、b、c任意一个。可以匹配aac、abc、ac