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

未分类2个月前发布 tree
22 0 0
↑ 点击蓝字 关注极市平台
超简单正则表达式入门教程
作者丨程序员阿德@知乎(已授权)
来源丨https://zhuanlan.zhihu.com/p/374523960
编辑丨极市平台

极市导读

 

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

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

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

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

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

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

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

图片来源 ComputerHope.com

1、字符位置

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

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

仅在单词开头时匹配is
>单词末尾on>仅在单词末尾匹配on

2、字符类别

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

字符含义例子例子说明
.匹配除换行符以外的任何单个字符ab.def可以匹配如 abcdef, ab9def, ab=def 等
s匹配空白字符(例如空格,制表符等)abcdse匹配 abcd e 和 abcd(tab)e
S匹配非空白字符SSsS可以匹配如 AB D, 12(tab)3 等
w匹配单个字母,数字或下划线。等价于[a-zA-Z0-9_]w{1,}-w{1,}可以匹配如 well-wishes, far-fetched 等
Ww 的取反,可以表示为 [^w]wWw可以匹配如 a@b,5-3 等
d匹配数字字符 0-9dd匹配所有两位数字
D匹配非数字字符Dd匹配 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},看不懂没关系,这个网页提供了详细说明:

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

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

公众号后台回复“数据集”获取100+深度学习各方向资源整理

极市干货

技术专栏:多模态大模型超详细解读专栏搞懂Tranformer系列大视觉模型 (LVM) 解读扩散模型系列极市直播
技术综述:小目标检测那点事大模型面试八股含答案万字长文!人体姿态估计(HPE)入门教程

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

点击阅读原文进入CV社区

收获更多技术干货

© 版权声明

相关文章

暂无评论

暂无评论...