正则表达式新手必学:5个常用符号搞定日常文本匹配
很多人看到正则表达式一堆符号就头大,觉得像天书。其实日常开发就用到几个符号,记住下面5个,提取手机号、邮箱、日期都够用了。
一、\d 匹配数字
\d 就是任意一个数字(0-9)。
提取手机号:1[3-9]\d{9}
意思是:1开头,第二位3到9,后面再跟9个数字。
比你写一堆if判断快多了。
二、\w 匹配字母数字下划线
\w 相当于 [a-zA-Z0-9_],用来匹配单词字符。
匹配账号名:^\w{4,16}$
^开头$结尾,要求4到16位,只能是字母数字下划线。
三、. 匹配任意字符(除换行)
点号什么都能配,配合*用最常见:
.* 匹配任意长度的任意字符(贪婪模式)
.*? 匹配到第一个满足就停(非贪婪,更常用)
比如提取html标签里的文字:<p>(.*?)</p>
四、[] 匹配括号里任意一个
[abc] 就是a或b或c都行。
常用写法:
[0-9] 等于\d
[a-z] 小写字母
[加加减减乘除] 中文也行
比如匹配座机号:0\d{2,3}-\d{7,8}
五、() 分组提取
括号括起来的部分会被单独提取出来。
从身份证里提取生日:(\d{6})(\d{4})(\d{2})(\d{2})(\d{4})
第2组就是出生年份,第3、4组是月日。
新手实用建议:
- 别硬背,先收藏一个正则测试网站(比如regex101),写一行测一行
- 复制别人写好的正则,改改变量就能用,不用从零写
- 复杂正则加注释,不然过两周自己都看不懂
- 提取文本优先用分组,比字符串切片靠谱
正则不是拿来炫技的,是解决"从一大段文本里找规律提取信息"这种脏活的工具。先学会这5个,遇到问题再查别的。
- 点赞
- 收藏
- 关注作者
评论(0)