查看原文
其他

​推荐一个开发人员常用的“正则”神器!

IT服务圈儿 2023-02-06

The following article is from 麦叔编程 Author 小K

源丨经授权转自 麦叔编程(ID:maishucode)

作者丨小K

有些时候,写正则是一件痛苦的事。

懂的人都懂,虽说正则是每个开发人员必学的技能,但事实上精通正则的开发非常少。

附上IPv6的正则表达式供大家参考学习~

(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}{4a7c450bd0aa7d1dfc65ff66fdb7ce72edd315e7e27d53501b8d613304d14c31}[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))
IPv6

大多数开发也只是偶尔会使用正则处理一些文本。

在这给大伙推荐一个「神器」

「那就是regex101!!」

使用该工具可以立即知道自己写的正则表达式能匹配到什么文本,这样动态的debug能提高我这种正则渣的效率。

功能介绍

例子 匹配「在句子开头的手机号码,或座机」

能适配多种编程语言:

而且能设置匹配的模式:

为了更照顾我这种正则渣,甚至在右侧窗口贴心的解释我写的表达式的含义:

对于正则初学者,在界面的右下侧还有显示参考文档:

简直就是妈妈般贴心!!!

生成编程语言代码

这个功能好像以前并没有,难道是最近上线的?

我很好奇的点进去看了下,几乎支持所有的主流编程语言:

但...我看了生成的Python的正则代码,怎么感觉那么繁琐呢?

我试运行这段代码,发现这段代码更注重的功能是「提示」

提示你会在文本的什么位置会匹配到什么符合条件的字符:

Match 1 was found at 0-11: 18812345678

而我实际开发中,更注重的是匹配到的文本而不在乎它的位置。

import re

regex = r"^1\d{10}|^\d{4}-\d{8}"
test_str = "18812345678,他还有一个电话号码是18887654321,他爱好的数字是01234567891,他的座机是:0571-52152166"
matches = re.findall(regex, test_str)
print(matches)

不过解读regex101给的Python代码也挺有意思的,不信你试试?

1、2023需求最高的编程语言:Python、JavaScript和Java

2、React和Vue谁会淘汰谁?

3、为什么 2 < 3 ? : 100 的结果是1?

4、2022年CSS都有哪些更新?

5、如果我有罪,请让法律制裁我,而不是用 AI 面试折磨我

点分享

点点赞

点在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存