正则表达式
作者:互联网
虽然说正则表达式(regex)对我们oier来说用的比较少,但其功能之强大、实用性之广,可谓吊打C++的string和char,秒杀Windows的通配符
正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。
正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。
听起来挺懵对不?
我们来看一个实例:
假设你在偷窥一个人的备忘录(
这个备忘录很长,大概也就几万字吧
你想找出里面的所有电话号码和电子邮箱地址,咋整?
目测法广搜?
其实很简单,你只需要打开这个网页,
把你要查找的范围复制粘贴进"在此输入待匹配文本"一栏,
然后在"在此输入正则表达式"一栏输入如下代码:
((\b[\w.%+-]+@[\w.-]+\.[a-zA-Z]{2,6}\b))|(((\d{3,4})|\d{3,4}-|s)?\d{7,14})
然后点测试匹配,查询结果就有啦~
嗯 很简单吧?
我猜你一定能看懂
……好吧
看不懂没关系,先花几分钟看看这篇文章,很轻松就能入门
其实掌握了这些,应付日常生活中的搜索基本就够了
如果要搞网页开发,估计还得学贪婪量词、惰性量词、正则回溯、捕获和非捕获组等神奇的东西……
下面看一个栗子
戳我戳我
这是我之前写过的一篇博客,你尝试复制代码到你的开发环境
……
是不是大跌眼镜?
竟然把行号也复制过来了???
(What a surprise!!!)
其实这也是我一开始没想到的,偶然间才发现了这个问题
(所以就写了这篇blog……)
那怎么解决类似的问题呢?
wait
你不是刚学了正则表达式吗?
干嘛不试试?
我们来分析一下:
对1~9行,行号前多出了两个空格,行号后多出了一个空格,可以这样搜索:
[1-9]
注意,[1-9]前有两个空格,后有一个空格,不能多不能少!!
[]是中括号表达式,表示区间
[1-9]表示的是1~9之间的任意一个数字。
对10~99行,行号前多出两个空格,行号后多出一个空格,同时末尾数字出现了0,可以这样搜索:
[1-9][0-9]
[1-9]前、[0-9]后各有一个空格
对100~最后一行,行号前没有空格,行号后多出一个空格,可以这样搜索:
[1-9][0-9][0-9]
开头没有空格,末尾一个空格
这样,每种可能出现的情况就被我们轻松解决啦
但是还有一个问题
你再回这个页面看看
一次似乎只能输入上面的一行表达式
但是我们想要同时搜出所有结果,怎么办?
很简单:
[1-9] | [1-9][0-9] |[1-9][0-9][0-9]
我们可以用 | 这个符号将各表达式连起来(注意,|前后的空格数量应和前面推导出来的相符!)
| 指明两项之间的一个选择,有点类似C++中的||
这样,我们把代码复制粘贴进待匹配文本一栏,点击"替换"即可(替换为空,就相当于删除)
把替换结果复制一下就完成啦~
至此,正则表达式的教程结束
感谢你的耐心阅读~
标签:匹配,行号,正则表达式,空格,一个,多出 来源: https://www.cnblogs.com/void-null/p/15182565.html