python学习--正则表达式(1)
re.compile(pattern[, flags])
用于生成正则表达式对象,供 match() 和 search() 这两个函数使用。
re.match(pattern, string, flags=0)
从起始位置开始匹配,匹配不成功返回None
import re
pattern = re.compile('cat')
print(re.match(pattern,'cat'))
print(re.match(pattern,'dog'))
第一个字符串匹配成功,第二个字符串匹配失败
<_sre.SRE_Match object; span=(0, 3), match='cat'>
None
上面的例子是正则表达式最简单的应用,实际应用过程常用的元字符如下图所示:
匹配单个字符使用“ . ”
import re
pattern = re.compile('c.t')
print(re.match(pattern,'cat'))
print(re.match(pattern,'c9t'))
print(re.match(pattern,'c>t'))
print(re.match(pattern,'caat'))
"*"前面的字符出现0次到多次
<_sre.SRE_Match object; span=(0, 3), match='cat'>
<_sre.SRE_Match object; span=(0, 3), match='c9t'>
<_sre.SRE_Match object; span=(0, 3), match='c>t'>
None
import re
pattern = re.compile("ca*t")
print(re.match(pattern, 'cat'))
print(re.match(pattern, 'ct'))
print(re.match(pattern, 'caaaaaaat'))
print(re.match(pattern, 'ca7'))
<_sre.SRE_Match object; span=(0, 3), match='cat'>
<_sre.SRE_Match object; span=(0, 2), match='ct'>
<_sre.SRE_Match object; span=(0, 9), match='caaaaaaat'>
None
"+"前面的字符出现1次到多次
import re
pattern = re.compile("ca+t")
print(re.match(pattern, 'cat'))
print(re.match(pattern, 'ct'))
print(re.match(pattern, 'caaaaaaat'))
print(re.match(pattern, 'ca7'))
<_sre.SRE_Match object; span=(0, 3), match='cat'>
None
<_sre.SRE_Match object; span=(0, 9), match='caaaaaaat'>
None
“?”前面的字符出现1次或者0次
import re
pattern = re.compile("ca?t")
print(re.match(pattern, 'cat'))
print(re.match(pattern, 'ct'))
print(re.match(pattern, 'caaaaaaat'))
<_sre.SRE_Match object; span=(0, 3), match='cat'>
<_sre.SRE_Match object; span=(0, 2), match='ct'>
None
{m}前面的字符出现m次
import re
pattern = re.compile("ca{5}t")
print(re.match(pattern, 'cat'))
print(re.match(pattern, 'caaaaat'))
print(re.match(pattern, 'caaaaaaaaaaaaaaaaat'))
None
<_sre.SRE_Match object; span=(0, 7), match='caaaaat'>
None
{m,n}前面的字符出现m到n次
import re
pattern = re.compile("ca{3,5}t")
print(re.match(pattern, 'cat'))
print(re.match(pattern, 'caaat'))
print(re.match(pattern, 'caaaat'))
print(re.match(pattern, 'caaaaat'))
print(re.match(pattern, 'caaaaaaaaaaaaaaaaat'))
None
<_sre.SRE_Match object; span=(0, 5), match='caaat'>
<_sre.SRE_Match object; span=(0, 6), match='caaaat'>
<_sre.SRE_Match object; span=(0, 7), match='caaaaat'>
None
[] 匹配类型和范围
import re
pattern = re.compile("c[a-z]t")
print(re.match(pattern, 'c9t'))
print(re.match(pattern, 'cbt'))
print(re.match(pattern, 'cct'))
print(re.match(pattern, 'czt'))
print(re.match(pattern, 'cAt'))
None
<_sre.SRE_Match object; span=(0, 3), match='cbt'>
<_sre.SRE_Match object; span=(0, 3), match='cct'>
<_sre.SRE_Match object; span=(0, 3), match='czt'>
None
转义字符\d
import re
pattern = re.compile("c\dt")
print(re.match(pattern, 'c9t'))
print(re.match(pattern, 'cbt'))
print(re.match(pattern, 'c88t'))
print(re.match(pattern, 'czt'))
print(re.match(pattern, 'c7t'))
<_sre.SRE_Match object; span=(0, 3), match='c9t'>
None
None
None
<_sre.SRE_Match object; span=(0, 3), match='c7t'>
转义字符\D
import re
pattern = re.compile("c\Dt")
print(re.match(pattern, 'c9t'))
print(re.match(pattern, 'cbt'))
print(re.match(pattern, 'c88t'))
print(re.match(pattern, 'czt'))
print(re.match(pattern, 'c7t'))
None
<_sre.SRE_Match object; span=(0, 3), match='cbt'>
None
<_sre.SRE_Match object; span=(0, 3), match='czt'>
None