**正则表达式 **
常用符号
前面两篇关于正则表达式的文章让我们知道了如何利用正则表达式去“匹配位置“以及如何”匹配指定字符的次数“,这篇文章继续总结正则中一些其它的常见符号。
文章还是会以实例的模式和大家一起学习,下面是用来实验用的文件。
这是一组形式相似的正则,主要由以下正则组成
看上面的表格,每个正则所表达的意义已经很清楚了,至于具体怎么用,还是举几个例子来说明。
下图中的命令是查找regular_2.txt文件中a后面是任意数字的行,从输出看,确实只有a后面是数字的行才会被匹配。
再举个例子,这次是查找regular_2.txt文件中a后面是标点符号的行,看到没,用[[:punct:]]就能达到目的了。是不是很简单,还有其它几个正则,大家有兴趣可以自己在环境上试试,这里就不一一举例了
[]表示匹配指定范围内的任意单个单词。这样说可能还是不太容易理解,还是用实例说明一切吧,现在来找出文件regular_2.txt 中a后面紧跟b或者紧跟c或者紧跟^的行。
[]中还支持用-连接表示匹配一个范围内的一个字符,比如说[A-Z]就等价于[[:upper:]],[0-9]等价于[[:lower:]]等等。
看过前面文章的同学可能会觉得诧异,^ 在位置锚定那篇文章中不是已经讲过它的作用是用来锚定行首吗?怎么这里又出现了。这是因为^和[ ]结合能表达两种含义。
^放在[]外表示匹配行首出现[]中字符的行,也就是我们前面说的锚定行首;而^放在[]内表示“排除、非”的意思,即表示匹配指定范围外的任意单个单词。
如果这样描述还是有点抽象,还是用例子来说明一切吧,^表示行首锚定的用法前面文章已经说过了这里就不再举例了,这里我们来实验下^放在[ ]中的用法,现在来查找regular_2.txt文件中a后面不含字母(包括大小写字母)的行。
在正则表达式中,**.表示匹配任意单个字符(换行符除外),范例如下:找出文件regular_2.txt 中字符a与字符d之间含有任意一个字符的行。可以看出,**只要
a和d之间有一个字符,不管是什么字符都匹配上了。
本文是正则表达式系列的第三篇文章,主要总结了正则表达式中一些常见表达式的用法,后面将会继续总结正则表达式其它的规则,希望对大家有所帮助,文章中如有遗漏或错误之处,还望大家指出!
推荐阅读:
专注服务器后台技术栈知识总结分享
欢迎关注交流共同进步