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

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

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

a

作者:龙吟九野

链接:https://www.zhihu.com/question/19676915/answer/171365948

来源:知乎
a

a

a

a

a

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

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

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

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

好了,课程开始了。

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

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

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

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

a

a

a

a

a

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

你就跟电脑说:

digital x 10

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

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

\d

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

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

\w

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

那就用点号

.

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

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

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

那么就是:

\d{11}

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

看看效果?

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

*

↑对,就是星号。

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

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

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

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

好了,开始:

来自话题:.*\n.*

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

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

效果是?

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

然后复制,粘贴。

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

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

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

~\(OvO)/~

↑这也是个正则表达式。

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

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

相关推荐
李小星同志42 分钟前
高级算法设计与分析 学习笔记6 B树
笔记·学习
霜晨月c1 小时前
MFC 使用细节
笔记·学习·mfc
Jhxbdks1 小时前
C语言中的一些小知识(二)
c语言·开发语言·笔记
AlexMercer10121 小时前
【C++】二、数据类型 (同C)
c语言·开发语言·数据结构·c++·笔记·算法
微刻时光2 小时前
Redis集群知识及实战
数据库·redis·笔记·学习·程序人生·缓存
chnyi6_ya2 小时前
一些写leetcode的笔记
笔记·leetcode·c#
青椒大仙KI113 小时前
24/9/19 算法笔记 kaggle BankChurn数据分类
笔记·算法·分类
liangbm34 小时前
数学建模笔记——动态规划
笔记·python·算法·数学建模·动态规划·背包问题·优化问题
GoppViper4 小时前
golang学习笔记29——golang 中如何将 GitHub 最新提交的版本设置为 v1.0.0
笔记·git·后端·学习·golang·github·源代码管理
Charles Ray5 小时前
C++学习笔记 —— 内存分配 new
c++·笔记·学习