笔记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.hqwc.cn/news/164207.html

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

相关文章

1. Collection,List, Map, Queue

1. java集合框架体系结构图 2. Collection派生的子接口 其中最重要的子接口是: 1)List 表示有序可重复列表,重要的实现类有:ArrayList, LinkedList ArrayList特点:底层数组实现,随机查找快,增删…

[云原生案例2.1 ] Kubernetes的部署安装 【单master集群架构 ---- (二进制安装部署)】

文章目录 1. 常见的K8S安装部署方式1.1 Minikube1.2 Kubeadm1.3 二进制安装部署 2. Kubernetes单master集群架构 ---- (二进制安装部署)2.1 前置准备2.2 操作系统初始化2.3 部署 docker引擎 ---- (所有 node 节点)2.4 部署 etcd 集…

python对Windows如何进行关机/重启?

用CMD命令进行关机/重启步骤: 1.winR,换出输入框 2.在输入框输入命令,如关机:shutdown -s -t 20,该命令是20秒后关机。 命令说明 -s 关机 -r 重启 -t 时间,后面是数字是你要设置的秒数 -a 取消命令&…

在 “219.**** 找不到用于监控项 key“agent.hostname“ 的主机接口.

细节 无法添加主机 在 "219.151" 找不到用于监控项 key"agent.hostname" 的主机接口.z 这个时候要改一下 方式:

基于springboot垃圾分类管理系统

基于springboot垃圾分类管理系统 摘要 垃圾分类管理系统是一个基于现代技术和数据管理方法的解决方案,旨在协助城市和社区更有效地管理垃圾分类。在这个系统中,Spring Boot框架充当了后端应用程序的构建工具,为其提供了高度灵活的特性。该系统…

5G-DFS最新动态-产品不在需要走FCC官方测试

添加图片注释,不超过 140 字(可选) 最近,FCC公布了最新版本的PAG(Product Acceptance Group)清单,即388624 D02 Pre-Approval Guidance List v18r04。这个清单的主要改变是将带有雷达侦测功能的…

[架构之路-244]:目标系统 - 设计方法 - 软件工程 - 软件开发方法:结构化、面向对象、面向服务、面向组件的开发方法

目录 前言: 一、概述: 软件聚合的程度由简单到复杂 二、主要开发方法详见 2.1 结构化的开发方法 2.2 面对对象的开发方法 2.3 面向服务的开发方法 2.4 面向组件的开发方法 三、不同开发方法比较 3.1 结构化开发方法 3.2 面向对象(OOP)开发方法 3.3 面向服…

pytest+yaml实现接口自动化框架

前言 httprunner 用 yaml 文件实现接口自动化框架很好用,最近在看 pytest 框架,于是参考 httprunner的用例格式,写了一个差不多的 pytest 版的简易框架 项目结构设计 项目结构完全符合 pytest 的项目结构,pytest 是查找 test_.…

STM32存储左右互搏 SPI总线读写FLASH W25QXX

STM32存储左右互搏 SPI总线读写FLASH W25QXX FLASH是常用的一种非易失存储单元,W25QXX系列Flash有不同容量的型号,如W25Q64的容量为64Mbit,也就是8MByte。这里介绍STM32CUBEIDE开发平台HAL库操作W25Q各型号FLASH的例程。 W25QXX介绍 W25QX…

武汉某母婴用品公司 - 集简云连接ERP和营销系统,实现库存管理的自动化

品牌介绍与关怀理念 武汉某母婴用品公司是一家专注于高端孕婴童护理用品的企业,积极响应和关怀孕产人群,全方位提供从待产用品到产后护理用品,再到婴童洗护用品和初生婴儿用品等一系列全面的母婴产品。我们的使命是满足客户的需求&#xff0…

前端之Bootstrap框架

目录 【一】Bootstrap介绍 【二】Bootstrap引入 【1】CDN加速链接 【2】注意 【三】布局容器 【四】栅格系统 【五】栅格参数 【六】列偏移 【七】排版 标题 内联文本元素 对齐 改变大小写 引用 列表 【八】表格 基本实例 条纹状表格 带边框的表格 鼠标悬停…

vuecli3 批量打印二维码

安装以个命令: npm install qrcode --save npm install print-js --save 页面使用: import qrcode from qrcode import printJS from print-js <el-button type"primary" click"handleBulkPrint">批量打印</el-button>methods: {// 批量打印…