笔记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作为文本编辑器示范是因为它的搜索功能支持正则表达式。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/133326.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面向萌新的数学建模入门指南

时间飞逝,我的大一建模生涯也告一段落。感谢建模路上帮助过我的学长和学姐们,滴水之恩当涌泉相报,写下这篇感想,希望可以给学弟学妹们一丝启发,也就完成我的想法了。拙劣的文笔,也不知道写些啥,…

Hadoop知识点全面总结

文章目录 什么是HadoopHadoop发行版介绍Hadoop版本演变历史Hadoop3.x的细节优化Hadoop三大核心组件介绍HDFS体系结构NameNode介绍总结 SecondaryNameNode介绍DataNode介绍DataNode总结 MapReduce介绍分布式计算介绍MapReduce原理剖析MapReduce之Map阶段MapReduce之Reduce阶段 实…

MySQL的event的使用方法

MySQL的event的使用方法 一、事件定时策略 1、查看event事件开启状态 SHOW VARIABLES LIKE event_scheduler;如图,Value值 ON:打开,OFF:关闭。 2、设置event事件打开 SET GLOBAL event_scheduler ON;如果MySQL重启了&#x…

vSLAM中IMU预积分的作用--以惯性导航的角度分析

作为一个学过一点惯导的工程师,在初次接触视觉slam方向时,最感兴趣的就是IMU预积分了。但为什么要用这个预积分,在看了很多材料和书后,还是感觉模模糊糊,云里雾里。 在接触了vSLAM的更多内容后,站在历史研究…

极简web集成 rtsp/rtmp免插件播放,web rtsp/rtmp推流方案

一直有客户要求在Web上集成rtsp/rtmp播放和web推流功能,测试对比各种流服务平台和播放器后,发现在github的ovsyunlive不管是延时,便捷和集成易用性都是非常好,还是看效果吧,直接下载测试如下: github 搜ovsyunlive下载…

STM32 IAP应用开发--bootloader升级程序

STM32 IAP应用开发--bootloader升级程序 Chapter1 STM32 IAP应用开发——通过串口/RS485实现固件升级(方式2)前言什么是IAP?什么是BootLoader? 方案介绍:1)bootloader部分:2)APP部分…

纷享销客获评中小企业数字化转型优质服务商

近日,纷享销客成功入选长沙市工信局评定的【中小企业数字化转型优质服务商】,专业服务实力得到官方认可! 今年6月,财政部、工信部联合印发《关于开展中小企业数字化转型城市试点工作的通知》,长沙市成功入选首批中小企…

程序员笔记本电脑选 windows 还是 MAC

计算机选择是每个进入 IT 行业同学的第一个重要选择,那么你是怎么选择的呢? 选择操作系统(Windows还是macOS)取决于程序员的需求、偏好和工作流程。每个操作系统都有其优点和缺点,下面将分别讨论它们,以帮助…

RK3568驱动指南|第七篇 设备树-第61章 实例分析:pinctrl

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…

Redis注解式开发结合SSM项目使用与Quartz框架介绍以及击穿、穿透、雪崩问题解决

目录 一、SSM项目整合Redis 1.1 导入pom依赖 1.2 spring-redis.xml 1.3 spring上下文配置 二、Redis注解式开发 2.1 Cacheable 注解 2.2 自定义策略 2.3 CachePut 注解 三、Redis中缓冲、击穿、穿透、雪崩问题解决 3.1 缓冲问题 —— Quartz 框架 3.2 常见的三种问题…

Git查询某次提交属于哪个分支

在Android studio(JetBrains系列也类似)左下角,可以看到所有提交信息。 选中某一次提交信息,右键,选择“Copy Revision Number”,如下图: 打开Android studio的Terminal,输入git b…

【广州华锐互动】3D全景虚拟旅游在文旅行业的应用场景

随着科技的不断发展,3D全景虚拟旅游正在成为一种新兴的旅游体验方式,它可以帮助旅游者更加深入地了解旅游信息,提升旅游体验。下面我们将详细介绍3D全景虚拟旅游可以应用于哪些场景。 一、旅游规划 3D全景虚拟旅游可以帮助旅游者更加直观地进…

SQL数据库使用方法

首先打开sqlite3.exe所在文件夹,如图1 图1 在文件夹路径中将路径改为cmd,如图2所示 图2 在弹出的cmd窗口中输入如图3所示。 图3 sqlite3 tichiceliang.db 其中tichiceliang是数据库名称。然后按enter,再在cmd中输入.table,可以看到文件夹目…

PC9502双节锂电池充电管理芯片高精度外围元件少SOP8封装

■ 产品概述 PC9502 系列是一款双节锂电池充电管理芯片。 该芯片 包含了充电状态检测、充电过程、温度检测等,内部还集成 一个高精度的基准电压模块,此芯片采用 SOP-8 封装。 PC9502 充电包含三种模式:预充电,恒流充电&#x…

Cassandra介绍(二)

1.8. 数据 存储 ( CommitLog、MemTable、SSTable ) 写请求分别到 CommitLog 和 MemTable, 并且 MemTable 的数据会刷写到磁盘 SSTable 上. 除 了写数据,还有索引也会保存到磁盘上. 先将数据写到磁盘中的 commitlog,同时追加到中内存中的数据…

通过you-get命令行工具下载B站等常见网站高清视频

参考: you-get:https://github.com/soimort/you-get EditThisCookie 源码:https://github.com/ETCExtensions/Edit-This-Cookie EditThisCookie 官网:https://www.editthiscookie.com/ you-get 是一个非常好用的命令行版视频下载工…

分享98个节日庆典PPT,总有一款适合您

分享98个节日庆典PPT,总有一款适合您 PPT下载链接:https://pan.baidu.com/s/1gNj_uRLz9a5uTG97ezma7Q?pwd8888 提取码:8888 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,收集整理更不易。知识付…

Django初窥门径-自定义用户模型

前言 自定义用户模型在Django应用中是一个重要的话题,它涉及到如何根据您的项目需求以及特定的用户身份验证和授权需求来调整用户模型。在以下前言中,我将讲述为什么自定义用户模型是如此重要以及其潜在的优势: 随着Web应用的不断发展&…

科智牧RFID|生猪养殖信息化管理RFID方案提供

以RFID技术为手段,以网络技术和数据库技术为支撑,构建生猪的养殖信息化管理方案,为养殖企业建立完善的生猪档案系统,实现养殖企业信息化管理,做到生猪养殖环节从饲料、养殖、防疫、治疗的信息记录与管理,也…

[计算机网络]认识“协议”

认识“协议” 文章目录 认识“协议”序列化和反序列化网络计算器引入Sock类设计协议编写服务端类启动服务端编写客户端类启动客户端程序测试 序列化和反序列化 在网络体系结构中,应用层的应用程序会产生数据,这个数据往往不是简单的一段字符串数据&…