超简单正则表达式入门教程

2022 年 11 月 5 日 极市平台
↑ 点击 蓝字  关注极市平台

作者丨程序员阿德@知乎(已授权)
来源丨https://zhuanlan.zhihu.com/p/374523960
编辑丨极市平台

极市导读

 

本文介绍了一些正则表达式的规则。 >>加入极市CV技术交流群,走在计算机视觉的最前沿

学习正则表达式的唯一方法就是 Learning by doing。

正则表达式是在程序或命令行中查找和替换文本的强大工具。熟悉最常见的正则表达式符号,以及如何使用它们,对于程序员来说是必不可少的技能。

正则表达式是在搜索中需要匹配的特殊字符串,使用范围很广,比如Java、Python等编程语言,grep、sed等命令行,还有vscode、vim等编辑器。

正则表达式的规则太多了,学会后不怎么用就又忘了,介绍各种规则前先分享给你一张图,

强烈建议你点赞收藏,然后每天看一眼,肯定记得比谁都牢。

图片来源 ComputerHope.com

1、字符位置

你可以根据文本的位置来进行定位。比如你要搜索某个单词,但前提是该单词是一行中的第一个。或者你可能只想查找某个字母系列,但前提是它们出现在单词的末尾。

字符 含义 例子 例子说明
^ 行首 ^abc 只匹配行首的abc
$ 行末 xyz$ 只匹配行末的xyz
\b 单词边界 ing\b 只匹配单词末尾的ing
\B 非单词边界 \Bing 只匹配不出在单词开头的ing
\< 单词开头 \<is 仅在单词开头时匹配is
\> 单词末尾 on\> 仅在单词末尾匹配on

2、字符类别

搜索文本时,仅根据字符分类来选择字符会很有用。字符的基本类别是数字和字母和其他字符(例如空格和标点符号)。

字符 含义 例子 例子说明
. 匹配除换行符以外的任何单个字符 ab.def 可以匹配如 abcdef, ab9def, ab=def 等
\s 匹配空白字符(例如空格,制表符等) abcd\se 匹配 abcd e 和 abcd(tab)e
\S 匹配非空白字符 \S\S\s\S 可以匹配如 AB D, 12(tab)3 等
\w 匹配单个字母,数字或下划线。等价于[a-zA-Z0-9_] \w\{1,\}-\w\{1,} 可以匹配如 well-wishes, far-fetched 等
\W \w 的取反,可以表示为 [^\w] \w\W\w 可以匹配如 a@b,5-3 等
\d 匹配数字字符 0-9 \d\d 匹配所有两位数字
\D 匹配非数字字符 \D\d 匹配 s0, ^4 等

3、字符数量

匹配字符的数量,例如你可以精确匹配六个空格,或定位长度在四到八位之间的数字字符串。

含义 例子 例子说明 例子说明
零个或多个字符 do*g 匹配 dg, dog, doog 等,o 的数量为任意个 匹配 dg, dog, doog 等,o 的数量为任意个
匹配 m 个字符 a{3} 只能匹配 aaa 只能匹配 aaa
字符个数不少于 m个,但不超过n个 字符个数不少于 m个,但不超过n个,优先匹配 n 次 只能匹配 b, bb, bbb 只能匹配 b, bb, bbb
至少出现 m 次 至少出现 m 次 c{2,} 匹配 cc, ccc, cccc 等

匹配0次或1次,优先匹配1次 cd? 只能匹配 c, cd
+ 匹配1-n次,优先匹配n次 sd+ 匹配 sd, sdd, sddd 等

4、字符集和字符范围

字符集是符合搜索条件的字符的列表,通过将一组字符括在方括号([和])中来指示字符集。

字符范围是字符集的一种,它在字符之间使用 - 来暗示它们之间的整个字符范围,以及开始和结束字符本身。

字符 含义 例子 例子说明
[characters] 匹配括号内列出的字符 [abcd] 可以匹配 a,b,c,d 单个字符
[^characters] 匹配括号内未列出的字符 [^abcd] a,b,c,d 除外的任意单个字符
[character-character] 两个字符之间范围内的任何字符(包括这些字符) [a-z] 匹配任意小写字符

字符范围可以进行拼接,比如 [a-zA-Z0-9_] 就是匹配任意单个字母或数字。

字符范围也可以使用数量字符,比如 [a-z]* 就可以匹配 hello, world 这样的单词。

.

最后说一下,如果想匹配正则表达式中的特殊字符,比如 \, ^, *, {, [ 等,因为它们有特殊含义,所以需要另外加 \ 来表示,比如 \* 表示 *,\\ 表示 \。

.

再最后说一下,在线正则表达式的网站有很多,我推荐我常用的一个:

https://regex101.com/

除了常用的支持不同语言的正则表达式解析外,里面有个社区,其中很多关于正则表达式的讨论,还有正则表达式的测试题,通过做题来学习,让自己对正则表达式更加熟练。

最厉害的是,它会对你的正则表达式进行解析说明,让你更容易看懂一长串正则表达式。

比如匹配指定格式的日期:^\d{4}-\d{1,2}-\d{1,2},看不懂没关系,这个网页提供了详细说明:


公众号后台回复“直播”获取极市直播系列PPT下载

△点击卡片关注极市平台,获取 最新CV干货


极市干货
算法竞赛:往届获奖方案总结以及经验详解|ACCV2022国际细粒度图像分析挑战赛
技术综述 BEV 学术界和工业界方案、优化方法与tricks综述 PyTorch下的可视化工具(网络结构/训练过程可视化)
极视角动态:极视角与华为联合发布基于昇腾AI的「AICE赋能行业解决方案」算法误报怎么办?自训练工具使得算法迭代效率提升50%!

CV技术社群邀请函 #




△长按添加极市小助手
添加极市小助手微信(ID : cvmart2)

备注:姓名-学校/公司-研究方向-城市(如:小极-北大-目标检测-深圳)


即可申请加入极市目标检测/图像分割/工业检测/人脸/医学影像/3D/SLAM/自动驾驶/超分辨率/姿态估计/ReID/GAN/图像增强/OCR/视频理解等技术交流群


极市&深大CV技术交流群已创建,欢迎深大校友加入,在群内自由交流学术心得,分享学术讯息,共建良好的技术交流氛围。


点击阅读原文进入CV社区

收获更多技术干货

登录查看更多
1

相关内容

正则表达式(Regular Expression,一般简写为RegEx或者RegExp),也译为正规表示法、常规表示法,台湾译「规则运算式」,在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。
强化学习数学入门教程,121页ppt
专知会员服务
74+阅读 · 2022年12月29日
【Manning新书】自然语言处理入门,458页pdf
专知会员服务
114+阅读 · 2022年9月22日
专知会员服务
68+阅读 · 2021年7月10日
【经典书】线性代数,286页pdf
专知会员服务
128+阅读 · 2021年2月28日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【干货书】流畅Python,766页pdf,中英文版
专知会员服务
224+阅读 · 2020年3月22日
《深度学习》圣经花书的数学推导、原理与Python代码实现
机器学习入门的经验与建议
专知会员服务
92+阅读 · 2019年10月10日
实操教程|手把手带你入门OpenCV
极市平台
0+阅读 · 2022年7月12日
ML通用指南:文本分类详细教程(上)
论智
19+阅读 · 2018年7月29日
深度学习线性代数简明教程
论智
11+阅读 · 2018年5月30日
入门 | 一文介绍机器学习中基本的数学符号
机器之心
28+阅读 · 2018年4月9日
深度学习目标检测从入门到精通:第一篇
专知
42+阅读 · 2018年1月24日
Python NLP 入门教程
开源中国
14+阅读 · 2017年10月1日
150 多个 ML、NLP 和 Python 相关的教程
Python开发者
14+阅读 · 2017年8月15日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
3+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
Arxiv
0+阅读 · 2023年1月4日
Arxiv
28+阅读 · 2022年1月13日
Arxiv
14+阅读 · 2021年6月30日
Arxiv
45+阅读 · 2019年12月20日
Optimization for deep learning: theory and algorithms
Arxiv
104+阅读 · 2019年12月19日
Arxiv
22+阅读 · 2018年8月30日
Arxiv
26+阅读 · 2018年8月19日
VIP会员
相关VIP内容
强化学习数学入门教程,121页ppt
专知会员服务
74+阅读 · 2022年12月29日
【Manning新书】自然语言处理入门,458页pdf
专知会员服务
114+阅读 · 2022年9月22日
专知会员服务
68+阅读 · 2021年7月10日
【经典书】线性代数,286页pdf
专知会员服务
128+阅读 · 2021年2月28日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【干货书】流畅Python,766页pdf,中英文版
专知会员服务
224+阅读 · 2020年3月22日
《深度学习》圣经花书的数学推导、原理与Python代码实现
机器学习入门的经验与建议
专知会员服务
92+阅读 · 2019年10月10日
相关资讯
实操教程|手把手带你入门OpenCV
极市平台
0+阅读 · 2022年7月12日
ML通用指南:文本分类详细教程(上)
论智
19+阅读 · 2018年7月29日
深度学习线性代数简明教程
论智
11+阅读 · 2018年5月30日
入门 | 一文介绍机器学习中基本的数学符号
机器之心
28+阅读 · 2018年4月9日
深度学习目标检测从入门到精通:第一篇
专知
42+阅读 · 2018年1月24日
Python NLP 入门教程
开源中国
14+阅读 · 2017年10月1日
150 多个 ML、NLP 和 Python 相关的教程
Python开发者
14+阅读 · 2017年8月15日
相关基金
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
3+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
相关论文
Arxiv
0+阅读 · 2023年1月4日
Arxiv
28+阅读 · 2022年1月13日
Arxiv
14+阅读 · 2021年6月30日
Arxiv
45+阅读 · 2019年12月20日
Optimization for deep learning: theory and algorithms
Arxiv
104+阅读 · 2019年12月19日
Arxiv
22+阅读 · 2018年8月30日
Arxiv
26+阅读 · 2018年8月19日
Top
微信扫码咨询专知VIP会员