正则表达式元字符总结

匹配单个字符的元字符

        元字符                    匹配对象

. 点号 匹配单个任意字符
[...] 字符组 匹配单个列出的字符
[^...] 排除型字符组 匹配单个未列出的字符
\char 转义字符 若char是元字符,或转义字符无特殊含义时,匹配char对应的普通字符
提供计数功能的元字符
? 问号 容许匹配一次,但非必须
* 星号 可以匹配任务多次,也可能不匹配
+ 加号 至少需要匹配一次,至多可能任意多次
{min,max} 区间量词 至少需要min次,至多容许max次
匹配位置的元字符
^ 脱字符 匹配一行的开头位置
$ 美元符 匹配一行的结束位置
\< 单词边界符 匹配单词的开始位置
\> 单词边界符 匹配单词的结束位置
其他元字符
| 间隔符 匹配任意分割的表达式
(...) 括号 限定多选结构的范围,标注量词作用的元素,为反向引用‘捕获’文本
\1,\2,... 反向引用 匹配之前的第一,第二组括号内的字表达式匹配的文本
并非所有版本的egrep都支持

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

此外,请务必理解一下几点:

  • 各个egrep程序是有差别的。它们支持的元字符,以及这些元字符的确切含义,通常都有差别——请参考相应的文档
  • 使用括号的3个理由:限制多选结构、分组和捕获文本
  • 字符组的特殊性在于,关于元字符的规定时完全独立于正则表达式语言“主体”的。
  • 多选结构和字符组是截然不同的,他们的功能完全不同,只是在有限的情况下,他们的表现相同
  • 排除型字符组同样是一种“肯定断言”——即使它的名字里包含了“排除”两个字,他仍然需要匹配一个字符。只是因为列出的字符都会被排除,所以最终匹配的字符肯定不在列出的字符之内。
  • 由星号和问号限定的对象在“匹配成功”时可能并没有匹配任意字符。即使什么字符都不能匹配到,他们仍然会报告“匹配成功”
  • -i 的参数很有用,他能进行忽略大小写的匹配
  • 转义有3中情况:

  1、'\' 加上元字符,表示匹配元字符所使用的普通字符

  2、‘\’ 加上非元字符,组成一种由具体实现规定其意义的元字符序列

  3、‘\’ 加上任意其他字符,默认情况就是匹配此字符

  对于大多数版本的egrep来说,字符组内部的反斜线没有任何特殊意义,所以此时他不是一个转义字符

 

posted on 2018-01-11 09:22  Alvin_Tang  阅读(736)  评论(0编辑  收藏  举报

导航