正则
一个难题,对于初学者来说正则到底要学习什么? 这里我还是给大家讲解一点规则吧。 讲多了,反而记不住也理解不了。
引用
import re
res = re.findall("l","hello , world")
print(res)
结果
['l', 'l', 'l']
也许这是你见过最不一样的正则 第一课。
上面代码返回了 查找到的3个l 。含义大家都能看懂。 就是在"hello , world"里面查找, 看看有几个"l"
接下来讲规则了。
- “.” 点代表匹配任何东西(数字,字符串,各种符号)
- “\d” 代表匹配任意数字
- “\w” 代表匹配任意数字或者字母
我们来试一下
print(re.findall("o.","good morning"))
结果
['oo', 'or']
从"good morning" 里面寻找 o加上".", 点代表任意字符。 所以 "oo","or" 都被匹配上了。
继续看例子
print(re.findall("\d\d","qq:12345,phone:323"))
print(re.findall("\w\w","qq:12345,phone:323"))
['12', '34', '32']
['qq', '12', '34', 'ph', 'on', '32']
结果,第一个是显示了连续的2个数字, 数字中的12345的5后面没有数字了,所以匹配不成功。 phone 后的e也是。
上面规则是哪些可以匹配,下面是匹配的个数:
- "*" 可以匹配0个或者多个
- "+" 可以匹配1个或者多个
- "?" 可以匹配0个或者1个
print(re.findall(":\d*","qq:12345"))
print(re.findall(":\d*","qq:"))
代表 “:”后面有多少个数字,*,其实有没有都可以把”:” 匹配上。
[':12345']
[':']
print(re.findall(":\d+","qq:12345"))
print(re.findall(":\d+","qq:"))
结果
- [':12345']
-
[]
-
第二个没有匹配到,因为+ 不支持 0
print(re.findall(":\d?","qq:12345"))
print(re.findall(":\d?","qq:"))
- [':1'] ? 不匹配多个,只匹配 0或者1
- [':']
正则规则较多,理解不了的可以多找资料看看