超简单正则表达式入门教程
共 2807字,需浏览 6分钟
·
2021-05-29 19:09
极市导读
本文介绍了一些正则表达式的规则。 >>加入极市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},看不懂没关系,这个网页提供了详细说明:
如果觉得有用,就请分享到朋友圈吧!
公众号后台回复“目标检测竞赛”获取目标检测竞赛经验资源~
# CV技术社群邀请函 #
备注:姓名-学校/公司-研究方向-城市(如:小极-北大-目标检测-深圳)
即可申请加入极市目标检测/图像分割/工业检测/人脸/医学影像/3D/SLAM/自动驾驶/超分辨率/姿态估计/ReID/GAN/图像增强/OCR/视频理解等技术交流群
每月大咖直播分享、真实项目需求对接、求职内推、算法竞赛、干货资讯汇总、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企视觉开发者互动交流~