十分钟搞定正则
文章目录
参考:
不知道大家在开发过程中由于没有时不时的遇到正则相关的开发或问题,面对着一串熟悉又陌生的字符,一边感叹他是使用什么魔法达到如此奇妙的效果,一边感叹这东西是真难学啊,基本是学一次忘一次,每次都得重新开始。刚好这次我遇到一个开发任务,经过权衡最终还是决定使用正则去实现,这次有点不一样,经过研究总结了正则的基本套路,以及分享一个非常实用的正则解析工具,让我们在十分钟入门正则并牢牢记住。
一、正则的基本套路
看各种教程会非常繁琐,我们不急于把相关的每个知识点都掌握,可以由点到面,先掌握一些核心和常用的点,然后再逐步深入,就像看书一样,最好是根据章节选读,而不是从头到尾试图将整本书都阅读到。那么通过以下常用的知规则为切入点:
序号 | 表达式 | 规则解释 |
---|---|---|
1 | ^ | 以某某开头(这个和bash脚本中一致) |
2 | $ | 以某某结尾(这个和bash脚本中一致) |
3 | \s | 小s,所有空白符,包括换行 |
4 | \S | 大s,非空白符【规律:大写和小写是相反的意思】 |
5 | \d | 数字字符。等价于 [0-9] |
6 | \D | 非数字字符。等价于 [^0-9] |
7 | * | 零次或多次 |
8 | + | 一次或多次 |
9 | ? | 零次或一次 |
10 | {n} | 匹配n次 |
11 | {n,} | 至少匹配n次 |
12 | {n,m} | 至少匹配n次,最多匹配m次 |
以上是正则中最核心的点-元字符,其他的修饰符、运算优先级、匹配规则可以再慢慢掌握。
二、在线正则解析网站
了解到一个在线解析正则的宝藏网站:https://jex.im/regulex(强推去实践一下),该网站支持输入你的正则,帮助你通过图片的方式对正则进行拆解和标注,举个例子:
比如某配置文件中有密码和端口的配置,其中完整的一行配置为:
password 0 admin123 port 8081
其中密码和端口是不固定的,我们需要通过正则将这两个元素提取出来,则正则可以写为:
^\s*password\s+0\s+(\s+)port\s+(\d{1,5})\s*$
打开该在线解析网站,并输入我们自己的正则,可以看到:
看到每一块正则元素,都被拆解并标记具体的含义,这十分简洁明了,另外我们注意Group1和Group2标记,他们便是正则匹配后的group块,拿上面的例子来说,Group1则命中我们所需要的密码字段,Group2则命中我们所需要的端口字段,他们都是被英文括号“()”所包围,我们可以通过各种语言的api获取到这些字段。