可视化正则表达式教程
作者:Amit Chaudhary
译者:前端小智
来源: dev
点赞再看,微信搜索**【大迁世界】关注这个没有大厂背景,但有着一股向上积极心态人。本文
GitHub
https://github.com/qq449245884/xiaozhi 上已经收录,文章的已分类,也整理了很多我的文档,和教程资料。
双12 A 里服务器27
块,通用点击这里购买可以找我返现30,等于27
块就能买到了,只限新用户,可以用家人的手机号购买!
在NLP中,根据模式检查文本或从文本中提取与特定模式匹配的内容是常见的任务。正则表达式是实现这一点的强大帮手。
NLP (Natural Language Processing) 是人工智能(AI)的一个子领域。
尽管功能强大,但是正则表达式经常令人生畏,因为它有许多我们需要记住的命令,而且在复杂的结构中,还需要有一定的逻辑能力。
在这篇文章中,主要用示图的方式来演示正则表达式的各种概念。 目的当然是帮助大家也包括我自己建立一个关于正则表达式的心智模型。
心智模型
我们先从一个简单的例子开始,在这个例子中,我们试图在文本中找到cool
这个单词。
使用正则,我们只需输入单词'cool'
作为模式,它就会匹配该单词。
'cool'
正则表达式与我们期望的单词'cool'
匹配时,它的操作方式不是单词级别而是字符级别,这是我们需要理清的一个点。
注意点:正则表达式在字符级别工作,而不是单词级别。
这意味着正则表达式'cool'
也将与以下句子匹配。
基本构建基块
现在我们已经理解了关键点,接下来我们了解一下如何使用正则表达式匹配简单字符。
特定字符
我们可以在正则表达式中指定字符,它将匹配文本中的所有实例。
例如,下面给出的正则表达式将匹配文本中所有'a'
实例:
'a'
也可以使用从0
到9
的任何数字,来匹配数字。
'3'
请注意,默认情况下,正则表达式区分大小写,因此以下正则表达式不匹配任何内容。
'A'
空格字符
我们可以使用特殊的转义序列来检测特殊字符,例如空格和换行符。
除了上述常见的,我们还有:
\r
回车\f
换页\e
可执行模式
特殊字符
正则表达式提供了一堆内置的特殊字符,这些字符可以一次匹配一组字符,这些字符以反斜杠\
开头。
模式:\d
它匹配0
到9
之间的数字。
注意,匹配项是一位数。 因此,我们在下面有4个不同的匹配项,而不是单个数字18.04
。
模式:\s
它匹配任何空格字符(空格、制表符或换行符)。
模式:\w
它匹配任何小写字母(a
到z
),大写字母(A
到Z
),数字(0
到9
)和下划线。
模式:.
它匹配除换行符(\n
)以外的任何字符。
let str = 'line 1\nline2'
str.match(/./g)// 结果:["l", "i", "n", "e", " ", "1", "l", "i", "n", "e", "2"]
模式:否定
如果我我们使用上述模式的大写形式,则表示他们否定的一面。
例如,如果\d
匹配从0
到9
的任何数字,则\D
将匹配0
到9
之外的任何数字。
字符集
字符集模式以[
开始,以]
结束,并匹配括号括起来的字符。例如,以下模式匹配任何字符'a'
, 'e'
, 'i'
, 'o'
和 'u'
。
我们也可以使用以下模式来代替\d
的功能。
除了指定所有数字,我们还可以使用连字符合-
仅需指定开始和结束数字。 因此,我们可以用[0-9]
代替[0123456789]
:
例如,[2-4]
可用于匹配2
到4
(即2
或3
或4
)之间的任何数字。
我们可以在括号内使用上面讲的特殊字符。 例如,匹配0
到9
之间的任何数字或空白字符:
下面,列出了一些通用模式及其含义。
锚点
正则表达式还具有特殊的处理程序,以使模式仅在字符串的开头或结尾时才匹配。
我们只能使用 ^
字符来匹配以指定开始的模式。例如
同样,我们可以在字符后使用$
字符 ,表示以指定字符结尾。 例如:
转义元字符
考虑一种情况,我们要完全匹配单词 "Mr. Stark"
。
如果我们想用这样的格式 Mr. Stark
来匹配,那么它会产生意想不到的效果。因为我们知道.
在正则表达式中有特殊的意义。
因此,如果我们想是精确匹配字符本身,则需要对特殊的元字符(如.
、$
等)进行转义。
下面是元字符列表,如果直接使用它们,记住要对它们进行转义。
^ $ . * + ? { } [ ] \ | ( )
重复类
现在我们可以对任何字符进行模式匹配,接着,我们来接触较复杂一点的模式。
笨的方式来匹配重复字符
仅使用到目前为止所学的知识,幼稚的方法就是重复这种模式。 例如,我们可以通过重复字符级模式来匹配两位数字。
\d\d
量词
正则表达式提供特殊的量词来指定其前面字符的不同重复类型。
固定重复
我们可以使用{...}
量词来指定模式应重复的次数。
例如,可以将先前用于匹配两位数字的模式修改为:
我们还可以使用相同的量词指定重复范围。 例如,要匹配2
位数或者4
位数字,可以使用以下模式:
当应用于句子时,它将同时匹配4位数字和2位数字。
注意 最小和最大计数之间不应该有任何空格,例如,
\d{2, 4}
不工作。
灵活的量词
正则表达式还提供了量词*
,+
和?
使用它可以指定字符的灵活重复。
?
字符表示匹配 0 次或者 一次
例如,假设我们想匹配单词“sound”
和“sounds”,其中“s”是可选的。我们可以使用?
量词。
+
字符表示匹配 一 次或者多次
例如,我们可以使用正则 \d+
找到任意长度的数字。
*
字符表示匹配 0 次或者多次
在Python中的用法
Python在标准库中提供了一个名为"re"
的模块来使用正则表达式。
对原始字符串的需求
要在Python中指定正则表达式,我们在r之前创建原始字符串
pattern = r'\d'
为了理解为什么我们在前面加上r
,我们尝试打印不带**r**
的表达式\t
。
>>> pattern = '\t'
>>> print(pattern)
可以看到,当我们不使用原始字符串时,字符串\t
在Python中被视为制表符的转义字符。
现在我们把它转换成原始字符串,我们会得到我们指定的任何东西
>>> pattern = r'\t'
>>> print(pattern)
\t
使用 re 模块
要使用re
模块,我们需要导入它:
import re
1. re.findall
这个函数允许我们以字符串列表的形式获得所有匹配项。
import re
re.findall(r'\d', '123456')// ['1', '2', '3', '4', '5', '6']
2. re.match
此函数在字符串开头搜索模式,并将第一个匹配项作为匹配对象返回。如果没有找到该模式,则返回None
。
import rematch = re.match(r'batman', 'batman is cool')
print(match)// <re.Match object; span=(0, 6), match='batman'>
使用match
对象,我们可以将匹配的文本作为
print(match.group())// batman
在我们的模式不在句子开头的情况下,我们将不会获得任何匹配。
import rematch = re.match(r'batman', 'The batman is cool')
print(match)// None
3. re.search
此函数还可以查找模式的第一次出现,但该模式可以出现在文本中的任何位置。如果没有找到该模式,则返回None
。
import rematch = re.search(r'batman', 'the batman is cool')
print(match.group())// batman
今天就跟大家分享到这里,我们下期再见,记得三连哦。
代码部署后可能存在的BUG没法实时知道,事后为了解决这些BUG,花了大量的时间进行log 调试,这边顺便给大家推荐一个好用的BUG监控工具 Fundebug。
原文:https://dev.to/amitness/a-visual-to-regular-expression-i3
交流
文章每周持续更新,可以微信搜索「 大迁世界 」第一时间阅读和催更(比博客早一到两篇哟),本文 GitHub https://github.com/qq449245884/xiaozhi 已经收录,整理了很多我的文档,欢迎Star和完善,大家面试可以参照考点复习,另外关注公众号,后台回复福利,即可看到福利,你懂的。
可视化正则表达式教程相关推荐
- Python正则表达式(附正则表达式教程、调试工具、可视化工具)
Hello大家好,正则表达式在Python当中的应用非常广泛,比如我们最熟悉的网页爬虫,我们在爬虫当中用的最多的就是正则表达式的匹配.今天我想和大家分享一下在Python中使用正则表 ...
- Stata:正则表达式教程
全文阅读:Stata:正则表达式教程| 连享会主页 目录 1. 简介 2. 基本设置 2.1 深色模式 2.2 历史记录 2.3 内存设置 2.4 图像窗口 2.5 数据签名 2.6 添加注释 2.7 ...
- 正则表达式教程之模式修正符
之前我们给大家介绍了正则表达式中的定界符.原子和元字符,那么我们关于正则表达式教程的基本语法就剩下了正则表达式中的模式修正符.本节会向大家介绍模式修正符的概念.模式修正符的构成,以及结合实例的模式修正 ...
- 正则表达式--教程一 简介(共三篇)
正则表达式--教程二(语法):https://blog.csdn.net/alzzw/article/details/99470144 正则表达式--教程三(匹配规则及示例):https://blog ...
- 正则表达式--教程二(语法)
正则表达式--教程一 简介(共三篇):https://blog.csdn.net/alzzw/article/details/99463959 正则表达式--教程三(匹配规则及示例):https:// ...
- 很好的正则表达式教程
版本:v2.21 (2007-8-3) 作者:deerchao 来源:unibetter大学生社区 转载请注明来源 本文目标 如何使用本教程 正则表达式到底是什么? 入门 测试正则表达式 元字符 字符 ...
- 由浅入深的正则表达式教程,简单快速学习正则
文章目录 前言 正则表达式是什么 字符串匹配方法 match() 字符串检查方法 test() 正则表达式语法 ^ 和 $ 的用法和区别详解 限定符 普通字符 特殊字符 元字符 运算符优先级 常用的正 ...
- 正则表达式教程: 开始
原文:Regular Expressions Tutorial: Getting Started 作者:Tom Elliott 译者:kmyhy 在这篇教程中,你将学习如何在 iOS app 中使用 ...
- MySql Installer 8.0.18可视化安装教程
MySql Installer 8.0.18可视化安装教程 一.MySql 8.0.18安装 1.百度搜索windows for mysql 2.选择MySQL :: Download MySQL I ...
最新文章
- python数据分析、整理、汇总展示_python-数据分析与展示(Numpy、matplotlib、pandas)---2...
- Tomcat集群快速入门:Nginx+Tomcat搭建集群
- 用柠檬来发电真的可行吗?
- Python数据分析教程:Numpy 中不得不知的4个重要函数
- 携程apollo系列-个人开发环境搭建
- Nginx跨域解决方案
- XCode: 如何添加自定义代码片段
- c语言编辑游戏时用哪个软件,我想用C语言编写一个小型游戏,使用什么软件
- 秒、毫秒、微秒、纳秒以及赫兹对应换算表
- 中国保安服务行业发展状况及前景预测分析报告2022-2028年版
- 解决java中使用getImage()导入图片失败问题
- 如何让《隐秘的角落》快速大结局?只需要一份保险......
- EXCEL作曲线图,如何转成高质量的图片
- Codeup——575 | 问题 H: 部分A+B (15)
- Oracle数据库的嵌套查询
- 做股票短线操作技巧 股票做超短线操作技巧
- javascript var变量长度问题 --笔记
- 常用的Xshell指令
- 《Head First 设计模式》读书笔记——组合模式
- 航迹关联--目标跟踪
热门文章
- 计算机管理记事本,win7旗舰版系统下自带记事本的强大功能汇总【图文详解】...
- SpringBoot+Layui 打印PDF
- Android 最全面试题汇总(问题+答案+详解链接)
- 家庭“好用”优化师:每一件好物都是在积攒生活闪光
- WebGis——Pixi开发vue项目之创建pixi应用并显示一个精灵(一)
- uni-app 表单验证
- 科创人·派拉软件CEO谭翔:零信任本质是数字安全,To B也要深研用户心智
- ABP Vnext 学习03-授权中心微信小程序登录
- Mysql知识梳理,学习笔记
- 深度挖掘新闻营销带给企业的好处和优势