笔记50:正则表达式入门宝典

引自:正则表达式是什么? - 知乎

中“龙吟九野”所写的一个回答,个人感觉看完之后如同醍醐灌顶,查了很多资料都没有这篇文章写的基础和通透,感觉是正则表达式扫盲好文,所以搬运一下,侵权删,感谢

a

作者:龙吟九野
链接:https://www.zhihu.com/question/19676915/answer/171365948
来源:知乎
a

a

a

a

a

文本,乃天下之大宗。自网络出现以来,文本信息指数爆炸式增长,乃至于各种文字泛滥于天下,自此,江湖皆是修文之人。如果你恰好也是其中之一,那可以来学习学习……怎么处理一些文字信息。不是用Word排版,也不是拿Excel统计单词。而是——找信息。

想象一下,假如你不知道网页是用什么鸟HTML写出来的。你打开了知乎页面,在你的面前都是文字、小图片:

笔记50:正则表达式入门宝典_第1张图片

然后老板过来:哦?你也看知乎?小鱼啊,把今天推荐的这些话题、对应的标题都复制下来做个目录?你会怎么办?当然是骂娘啦。都不会程序什么的,只好一个个复制、粘贴咯。别急着骂娘。假设你不知道document.getElementByXX这些鸟玩意儿,那我们就把这些当做文本来处理。全选页面,复制,粘贴到我们的编辑器Sublime Text中。

笔记50:正则表达式入门宝典_第2张图片

仔细观察一下,这些文本是不是有规律?

好了,课程开始了。

(1)但凡文字是有规律的,我们都会这么描述:我要一段都是字母的。我要一段都是数字的。

(2)或者你的邮箱会是被这么描述的:文字或者数字(可出现多次)@某个网站.com

看吧……其实你本来就会“正则表达式”,只是你不说而已。

正则表达式就是名字看起来比较高大上,其实就是……我要啥啥啥类型的文本,你给我瞅瞅有没有呗?

a

a

a

a

a

比如说,我要10个数字的。

你就跟电脑说:

digital x 10

当然,这样写的话……有可能人家是以为这样:

所以要用点特殊的符号来表示刚才的话。比如数字digital缩写为

\d

没错,是带着斜杆的d,没有了斜杆,软件就以为你是要找“d”的字母了。我们把斜杆称为:魔法·转义字符。

对应的,字母word可以表示为

\w

如果要表示任意字符呢?(任意字符就包括了任何你看得到的字符和看不到的字符)

那就用点号

.

↑这个点号有点小。仔细观察应该看得到。

那我想找到文本中的手机号码呢?怎么描述?

我就会说:数字,长度固定为11个的。

那么就是:

\d{11}

对,后面的花括号里面包裹的是次数。

看看效果?

笔记50:正则表达式入门宝典_第3张图片

那如果说是任意长度呢?那就用:

*

↑对,就是星号。

所以也可以试试任意长度的数字:

笔记50:正则表达式入门宝典_第4张图片

现在,知道怎么提取想要的知乎内容了吧?

没错,咱们就规定以“来自话题”为开头,然后匹配到下一行的任意内容(反正经过观察,这就是想要的标题行了)

如果要匹配新的行,要记得用上换行符号\n。

好了,开始:

来自话题:.*\n.*

↑表示以来自话题:为开头,然后匹配话题内容(任意字符都行)

再然后是换到新的一行,又匹配了任意的内容(这是标题)

效果是?

笔记50:正则表达式入门宝典_第5张图片

点击“全查”,即可选中所有同类型的文字。

然后复制,粘贴。

笔记50:正则表达式入门宝典_第6张图片

当然,现在面对的是小网页,文本不多,可能看不出什么优势。

但如果是一本小说那么长的报表呢?

想了解更多的正则表达式……就百度去吧。本咸鱼要洗白白了

~\(OvO)/~

↑这也是个正则表达式。


 

PS:之所以以Sublime Text作为文本编辑器示范是因为它的搜索功能支持正则表达式。

其他文本编辑器就看你的喜好了。反正我就喜欢用这个处理大量文字,故安利一波。

你可能感兴趣的:(笔记)