正则表达式元字符总结
匹配单个字符的元字符 元字符 匹配对象 |
||
. | 点号 | 匹配单个任意字符 |
[...] | 字符组 | 匹配单个列出的字符 |
[^...] | 排除型字符组 | 匹配单个未列出的字符 |
\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 阅读(747) 评论(0) 编辑 收藏 举报