grep命令中扩展正则表达式语法
正则表达式包括基本元素和操作符号。只使用基本元素可以构造简单的正则表达式;使用基本元素和操作符号可以构造复杂的正则表达式。 一、基本元素基本元素分为“匹配位置的基本元素”,“匹配单个字符的基本元素”和“匹配一个字符集合的基本元素”。 1.1、匹配位置的基本元素
“行首位置”具体是指“紧邻换行符后面的位置”;“行尾位置”具体是指“后面紧邻换行符的位置”。我们知道,在Windows中换行符是“rn”,而在Linux中换行符是“n”,那么“^,$,&;,&;”能兼容这两种情况吗?答案是这跟具体的grep实现有关。 hello
line
world
字节流形式如图1所示。 图1 有文本文件“b.txt”,内容如下: hello
line
world
字节流形式如图2所示。 图2 分别执行 图3 图4 分别执行 图5 图6 “单词首尾两端位置”具体是指“单词与单词分隔符之间的位置”,单词分隔符包括“空格字符,制表符,换行符”等。 hello world java programmer 字节流形式如图7所示。 图7 接连执行以下命令,结果如图8所示。 grep -E 'bhellob' c.txt
grep -E 'bworldb' c.txt
grep -E 'bjavab' c.txt
grep -E 'bprogrammerb' c.txt
图8 接连执行以下命令,结果如图9所示。 grep -E 'BhelloB' c.txt
grep -E 'helBlo' c.txt
图9 1.2、匹配单个字符的基本元素
1.3、匹配一个字符集合的基本元素
二、操作符号有3类操作符号:重复操作符,选择操作符和连接操作符。3类操作符有不同的操作优先级顺序,这个优先级顺序无需记忆,只需通过“()”符号显式指定优先级即可。 aabcabc
hello world
this is a test text
执行 图10 2.1、重复操作符
2.2、选择操作符选择操作符是“|”。“A|B”表示的含义是:在匹配过程中,“A和B”两个正则表达式中只要有一个正则表达式匹配,那么最终结果就是匹配。 2.3、连接操作符没有特定的符号用来表示连接操作符。将两个正则表达式放在一起就是将这两个正则表达式连接起来了。比如有正则表达式“086”和“[0-9]{11}”,将这两个正则表达式放在一起,即“086[0-9]{11}”,也就是将这两个正则表达式连接起来了。 三、转义可以使用“”进行特殊字符的转义。比如现有文本文件“f.txt”,内容如下: +{}|()?
接连执行如下命令,所得结果如图11所示。 grep -E '+' f.txt
grep -E '{' f.txt
grep -E '?' f.txt
图11 四、其他正则表达式的运转跟“locale”设置息息相关。比如在有些“locale”设置中,“[a-d]”等价于“abcd”,而在有些“locale”设置中,“[a-d]”等价于“[aBbCcDd]”。又比如只在有些“locale”设置中,“w”等价于“[0-9A-Za-z]”,“W”等价于“[^0-9A-Za-z]”才成立。 参考文献: [1]man grep (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Binary XML file line #7: Error inflating class android.
- flash – 从自定义形状蒙版动作脚本3中保存裁剪的图像
- ruby-on-rails – 可用性日历的最佳数据库模式是什么,它允许
- ios – 如何撤消xcode,如果没有提交,则丢弃所有更改
- 如何在Swift iOS应用程序中隐藏状态栏?
- c# – 在模拟的EF6数据库中通过外键加载相关数据
- ruby-on-rails – 如何在执行rake db:setup之前检查数据库
- R:将XML数据转换为数据帧
- Vue系列(二):发送Ajax、JSONP请求、Vue生命周期及实例属
- PostgreSQL等效于SQLServer的NoLock提示