python中的正则表达式学习总结
正则表达式
如果你是学python爬⾍的,那么你⼀定要对正则表达式使⽤⾮常熟练,如果你不是,⽐如你是学python⾃动化运维的或其他的,那么只需要对常见的熟练使⽤即可,需要遇到复杂的再百度。
使⽤正则表达式,只需要记住⼀个“套路”,如下图,然后慢慢延申即可。
⾸先python中需要引⼊re模块 才能使⽤正则表达式
我们只需要记住re.match后⾯匹配的括号中,第⼀个字段是你想要匹配筛选得到的东西,第⼆个字段是从哪个字符串中匹配
看下图,还要记住,只要re.match有返回值,那么就是匹配到了,如果没有匹配值就是没有匹配到。
事实上,re.match只是re功能函数中的⼀个,表⽰从头匹配,我们⽤的最多的是re.search()从整个字符串匹配
re.search()只返回第⼀个匹配到的结果
我们⽤的⽐较多的还有re.findall() 以列表的形式 返回所有匹配到的结果
不太理解可以看下⾯的⽰例
了解以上的基础,然后下⾯总结⼀下正则中常⽤的匹配规则。
下⾯使⽤上⾯规则由浅⼊深举⼀些例⼦,读者如果是刚接触正则,可以跟着写写对应代码
1.’.’ 匹配除\n外的任意⼀个字符
我们可以使⽤ + 表⽰向后匹配多个字符,后⾯也会说到
2.[a-z]匹配任意⼩写字母
3.[0-9]匹配数字 {5}表⽰匹配前⾯字符5次 {2,5}表⽰匹配前⾯字符 2-5次
还有⼀个注意点,我们⽤re.match()或re.search()时 都可以⽤group()⽅法得到匹配到的值,⽤re.findall()就没有group()⽅法了。
5.’|’ , 或 的意思
5.’|’ , 或 的意思
6.(…) 分组匹配
看下图,不加括号表⽰ c匹配2次;加了括号表⽰括号中的 abc 整体匹配2次
7.上⾯说到[0-9]可以表⽰数字,\d同样可以表⽰数字
\D表⽰匹配⾮数字
8.\w 匹配 [A-Za-z0-9] 即 所有带字母与数字的
\W匹配⾮[A-Za-z0-9]的,也就是只匹配⾮特殊字符
9.‘\s’ 匹配空⽩字符(换⾏符,tab键等),\t,\n,\r
以上,是基础匹配规则演⽰
接下来,看⼀些其他实⽤的⽰例:
先看⼀个简单的,
解释⼀下:⾸先使⽤了 (…) 分组匹配,我们使⽤**groupdict()**能的到<>中内容对应的⼀个字典; ?P<>是固定格式具体有什么⽤呢?看下图中的例⼦:
(划线部分是⼀个⾝份证号)
python正则表达式不包含
下图就是按照数字分割了后⾯的字符串
注意,返回的也是列表形式
第⼀个字段是要匹配的内容,第⼆个是替换成什么,第三个是字符串,第四个count是替换⼏次
返回结果就是替换完成之后的新字符串
4.ip地址
⼩结:re中我们常⽤的⽅法就是 re.search;re.findall;re.split;re.sub
然后熟悉常⽤匹配规则,灵活运⽤就好了