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

上面的例子是正则表达式最简单的应用,实际应用过程常用的元字符如下图所示:

python学习--正则表达式(1)

匹配单个字符使用“ . ”

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