linux下关于正则表达式grep的一点总结(2)

4. 特殊符号:

字符 说明 举例
\   转义字符,普通字符转义为特殊字符,特殊字符转义为普通字符   <写成<匹配单词开头,.前面加上\写成\.. 的字面值  
()   将正则表达式的一部分括起来组成一个单元,可以对整个单元使用数量限定符   ([0-9]{1,3}\.){3}[0-9]{3}匹配IP地址  
|   连接两个子表达式,表示或的关系   n(o|either)匹配no或neither  

应用:

( )将包含内容括起来作为一个整体,进而通过数量限定符限定。

linux下关于正则表达式grep的一点总结

| 用来级联多个条件,只要有任意一个匹配,即可匹配,表示或者关系,我们称之为析取符

linux下关于正则表达式grep的一点总结

正则表达式版本其他常用通用字符集及其替换

符号 等价于 匹配
\d   [0-9]   数字字符  
\D   [^0-9]   非数字字符  
\w   [a-zA-Z0-9_]   数字字母下划线  
\W   [^\w]   非数字字母下划线  
\s   [_\r\t\n\f]   表格,换行等空白区域  
\S   [^\s]   非空白区域  

于是, 我们现在可以用这些符号来简化我们正则表达式的编写了?试试

linux下关于正则表达式grep的一点总结

可是结果好像并不如我们所愿?其实这里还与正则表达式版本有关。正则分为以下几个版本:

基本的正则表达式(Basic Regular Expression 又叫 Basic RegEx 简称 BREs)扩展的正则表达式(Extended Regular Expression 又叫 Extended RegEx 简称 EREs)Perl 的正则表达式(Perl Regular Expression 又叫 Perl RegEx 简称 PREs)

在grep中指定相应的参数即可,而这几个版本中默认的就是基本正则,带上-E选项就是扩展正则,而带上-P参数就是用perl版正则。解决前面的问题,我们这里让grep带上-P选项便可解决了

版本间区别正则表达式的Extended规范和Basic规范基本相同。只是在Basic规范下,有些字符 ?+{}|() 应解释为普通字符,要表示上述特殊含义则需要加 \ 转义。反之,在Extended规范下, ?+{}|() 应该被理解成特殊含义,要取其字面值,也要对其进行\ \ 转义。所以, grep 工具带上 -E 选项,表示使用扩展正则来进行匹配(亦可直接使用egrep 命令操作),若没有,则表示使用基准正则进行匹配。带-P选项使用的perl正则匹配。它是perl语言集成的最重要的一种特性,它十分强大,很多语言设计正则式支持的时候基本上都参考Perl的正则表达式。正则匹配模式

贪婪模式

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwwfzf.html