序
我希望在这里列出我很多想写的正则表达式,很多我想写,但是不知道怎么写的。分享点滴案例。未来这个文章会越来越长
前言
互联网时代,除了文本还有更好的学习方式,下面是几个不错的练习网站,如果你想系统地学习,练习正则表达式,你应该使用它们。
第一个网站 earn regex the easy way
著名的Learn regex the easy way开源项目的中译版本。
链接:https://github.com/ziishaned/learn-regex/blob/master/translations/README-cn.md
直接滚动鼠标查看,这个MD文档本身就是教程:
点击“在线练习”进入对应的练习
这个文档还支持离线保存为PDF,适合那些不具备互联网环境,希望在离线环境下学习的同学。
第二个网站 *RegexOne中文版
是RegexOne的中文版本,相较原版,中文版本界面更加优雅清晰
中文版连接:https://imageslr.github.io/regexone-cn/lesson/introduction_and_abcs.html
先完成基础课程,然后完成进阶课程,你的正则表达式水平就超过普通人一大截了。强力推荐!
第三个网站RegexLearn
链接:https://regexlearn.com/zh-cn/learn
这个网站包含了两部分
Regex 101和Regex on SEO
Regex 101部分对原版的Regex 101做了优化,界面更清晰友好,但是有珠玉在前,不太推荐这个模块。
这个网站的特色在于有Regex on SEO部分,但是笔者没有尝试过,有需求的同学按需访问了。
*注: 正则表达式是严格区分大小写的,所以这个网站前面让你输入“OK”进入下一步,请注意这里的OK是大写。
筑基篇
这一节将介绍一些简单的正则表达式语法
to be continue~
实践篇
不推荐阅读此章节,因为词章节包含了一些业务需求,也就是说,里面的内容涉及到了具体的一些场景描述,而这些实践的知识可以在你之后的工作中获取到,不过如果你感觉你已经功法大成,你也可以随便看看,这些问题你是否都能解决。
案例
我有这样的一批文字,我需要删掉Mozilla/5.0前面的所有内容,如果可以用正则表达式批量匹配到,删除就会很快。
Mac Chrome Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36
Mac Firefox Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:65.0) Gecko/20100101 Firefox/65.0
Mac Safari Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.3 Safari/605.1.15
Windows Chrome Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36
Windows Edge Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17763
Windows IE Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
iOS Chrome Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) CriOS/31.0.1650.18 Mobile/11B554a Safari/8536.25
iOS Safari Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12F70 Safari/600.1.4
Android Chrome Mozilla/5.0 (Linux; Android 4.2.1; M040 Build/JOP40D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36
Android Webkit Mozilla/5.0 (Linux; U; Android 4.4.4; zh-cn; M351 Build/KTU84P) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
写法如下:
^(.*?)(?=Mozilla)
这个正则表达式的含义是:
- ^:匹配行的开始。 (.*?):使用非贪婪模式匹配任何字符,尽可能少地匹配。这一部分将会是你的匹配结果。
- (?=Mozilla):前瞻断言,查找后面是 “Mozilla” 的内容,但不包含 “Mozilla” 本身。
- 这个正则表达式将会匹配每一行中 “Mozilla” 前面的所有内容,但不包含 “Mozilla” 本身。
可以看到,正确地匹配到了前面的内容
后记-逆练心法
什么时代了还在自己写正则,AIGC时代,交给AI吧!
第一个王牌工具,Chatgpt
链接:https://chat.openai.com/#
向它描述你的需求即可,但是GPT国内封得太厉害。
第二个王牌工具,poe
聚合式的AI,注册更人性化,支持多种语言模型(当然需要会员才能支持)
不过免费的Assistant模型和免费的gpt也已经很够用了,账号没有像gpt封杀得那么厉害,推荐!
第三个工具 国内开发者提供的工具
可是你说,你发的网页我都无法打开,你教程有问题。
哎哎,别忙走,
我这里还有PLAN B,不过只能推荐一下国内的这种工具了。
链接:https://wangwl.net/static/projects/visualRegex#
提供了常用的各种匹配,以及简单的NLP支持。