Linux正则表达式-元字符

时间:2021-06-13 18:50:04

我们已经看过了表达式中的两个基本元素:
1.以一个字面值或变量表示的值。
2. 一个操作符。
正则表达式是由这些相同的元素组成的。除元字符除外,都被解释为只匹配它本身的字面值。
元字符汇总

特殊字符 用途
. 匹配除换行符以外的任意单个字符。在awk 中,句点也能匹配换行符。
* 匹配任意一个(包括零个)在它面前的字符(包括由正则表 达式指定的字符)
[...] 匹配方括号中的字符类中的任意一个。如果方括号中第一个字符为脱字符号(^),则表示否定匹配,即匹配除了换行符和类中列出的那些字符以外的所有字符。在awk 中,也匹配换行符。连字符(-)用于表示字符的范圈。如果类中的第一个字符为右方括号(] )则表示它是类的成员。所有其他的元字符在被指定为类中的成员时都会失去它们原来的含义
^ 如果作为正则表达式的第一个字符,则表示匹配行的开始。在awk 中匹配字符串的开始,即使字符串包含嵌入的换行符。
$ 如果作为正则表达式的最后一个字符,则表示匹配行的结尾。在awk中匹配字符串的结尾,即使字符串包含嵌入的换行符。
\ {n, m\} 匹配它前面某个范围内单个字符出现的次数(包括由正则表达式指定的字符)。\ {n\} 将匹配n次出现, \ {n, \}至少匹配n次出现,而且\ {n, m\} 匹配n和m之间的任意次出现。(只有sed 和grep 的一些非常旧的版本中不能使用)。
\ 转义随后的特殊字符。

扩展的元字符(egrep和awk)

特殊字符 用途
+ 匹配前面的正则表达式的一次或多次出现
? 匹配前面的正则表达式的零次或一次出现
| 指定可以匹配其前面的或后面的正则表达式(替代方案)
() 对正则表达式分组
{n,m} 匹配它前面某个范圈内单个字符出现的次数(包括由正则表达式指定的字符) 。 { n }表示匹配n次出现, {n,}至少匹配n次出现, { n, m} 匹配n和m之间的任意次出现。(用于POSIX 的egrep 和POSIX awk而不是传统的egrep 或awk)

元字符在正则表达式中有特殊的含义,与+和*在算术表达式中具有特殊含义的方式相同。有些元字符(+?()|)只有作为由程序(例如egrep和awk)使用的扩展集的一部分时才可用。在一下几节中我们将介绍每个元字符的用法,首先从反斜杠开始介绍。


参考资料:http://www.linuxawk.com/communication/398.html