先来正则表达式的一张图:
python中使用re模块来使用正则表达式:import re。
第一种方法:
先创建匹配规则RE,利用re中compile:r1 = re.compile('一个正则表达式'),如r1 = re.compile('abc') 用来匹配abc字符的规则。
然后使用创建的规则去作用于字符串:可以选择match,findall,search,finditer方法。
方法/属性 | 作用 |
match() | 决定 RE 是否在字符串刚开始的位置匹配 |
search() | 扫描字符串,找到这个 RE 匹配的位置 |
findall() | 找到 RE 匹配的所有子串,并把它们作为一个列表返回 |
finditer() | 找到 RE 匹配的所有子串,并把它们作为一个迭代器返回 |
如:r1.match('abcabca'),将返回一个MatchObject的实例,r1.match('bcabca'),将返回空none,因为字符串开始位置不匹配abc。
r1.search('cccabcac') 将返回一个MatchObject的实例 。
MatchObject的实例可以使用的方法有:group,start,end,span
方法/属性 | 作用 |
group() | 返回被 RE 匹配的字符串 |
start() | 返回匹配开始的位置 |
end() | 返回匹配结束的位置 |
span() | 返回一个元组包含匹配 (开始,结束) 的位置 |
m1 = r1.match('abcabca'),那么m1.group()返回abc,m1.start()返回0(abc开始的位置).
第二种方法:
直接用re使用match,findall,search,finditer方法。带上正则表达式和字符串参数。
re.match('正则表达式',‘字符串’)。如:
re.findall('aba','ababababa'), 返回2个aba的列表,匹配时一个字符只使用一次。
正则表达式的使用:
在表达正则表达式时,经常会有反斜杠\,但是不是代表转义,因此在写正则表达式时在表达式字符串前面加r,如r‘\d’
re.findall(r'\d','s12d3f4as') 将返回['1','2','3','4']