Python的re模块,正则表达式
#导入re模块
import re
1、match方法的使用:
result = re.match(正则表达式,待匹配的字符串)
正则表达式写法:
第一部分:
举例:
>>> re.match(".","&and") #.匹配任意字符,除了\n,只要第一个匹配,后面的and都是无所谓了,match方法就是这样定义的。从字符串最左边开始匹配,只要都匹配正则表达式,字符串后面的多余部分可以随意
<_sre.SRE_Match object; span=(0, 1), match='&'> #匹配到就有返回值,match是匹配到的具体内容,即 给一个.匹配了最左边的第一个字符&。
>>> re.match(".","\n") #不匹配,就返回None
>>> re.match("[1234][a-z][A-Z]\d","1aZ9") #正则表达式的意思是第一个字符要满足在1-4范围内,第二个字符是小写字母a-z,第三个字符是大写字符A-Z,第四个字符是数字,后面的字符串刚好满足,所以返回了下面这串值。这里同样的1aZ9匹配,1aZ9#@@¥%¥也是匹配的。
<_sre.SRE_Match object; span=(0, 4), match='1aZ9'>
>> re.match("\w\W","a%224") #第一个匹配单词字符,第二个匹配非单词字符,后面的无所谓
<_sre.SRE_Match object; span=(0, 2), match='a%'>
>>> re.match("\w\W","ab")
第二部分,个数相关:
举例:
>>> re.match("\d*","1234aa") #\d出现了0次或者多次
<_sre.SRE_Match object; span=(0, 4), match='1234'> #匹配到的是1234
>>> re.match("\d*","abd")
<_sre.SRE_Match object; span=(0, 0), match=''> #匹配到空字符
>>> re.match("\d+","abd") #匹配不到,因为+意思是必须至少出现1次
>>> re.match("\d{11}","18510666666") #数字匹配11个
<_sre.SRE_Match object; span=(0, 11), match='18510666666'>
# 匹配手机号,分析:手机号第一个数字必须为1,第二个数字应该是3、4、5、8、9,第3个到第11个是任意数字,所以为:\d{9},表示9个数字,然后只能有11个数字,所以9个数字的后面加$表示匹配结束,只能匹配前面的11个数字
res = re.match(r"1[34589]\d{9}$", "13511111111")
>>> re.match("1[34589]\d{9}"