查看原文
其他

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

脚本之家 2023-01-23

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

 关注脚本之家”,与百万开发者在一起

出品 | 麦叔编程 (ID:maishucode)

已获得原公众号的授权转载

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

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

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

附上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代码也挺有意思的,不信你试试?

<END>
9.9元抢980元电影卡
👇👇
【☝🏼点击查看更多详情】

  推荐阅读:
墙裂推荐!这才是专属程序员们的卫衣!
有了这个库,以后再也不用写正则表达式了!
手写了一个正则表达式引擎:递归、动态规划
用 Markdown 生成思维导图,这款神器太牛了!
甩开三星自己干,苹果第一块自研屏幕要来了?
Office 2019/2021专业增强版,正版终身授权!

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

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