正则表达式-使用字符集
如果待匹配的字符串中,某些字符可以有多个选择,就需要使用字符集([]),也就是一对中括号括起来的字符串。例如,[abc]表示a、b、c三个字符可以取其中任何一个,相当于’a|b|c’,所以对单个字符使用或关系时,字符集和择一匹配符的效果是一样的。
m = re.match('[abcd]',a)
print(m.group())
m = re.match('a|b|c|d',a)
print(m.group())
当对长度大于1的字符串使用或关系时,字符集就无能为力了,这时只能使用择一匹配符。因为字符集会将括号括起来的字符串拆成单个的字符,然后再使用"或"关系。
import re
m = re.match('[abcd]','ab')
print(m)
m = re.match('ab|cd','ab')
print(m)
如果将多个字符集写在一起,相当于字符串的连接。
m = re.match('[ab][cd]','ac')
print(m)
[例 11.5] 本例演示了字符集和择一匹配符的用法,以及它们的差别。
import re
m = re.match('[ab][cd][ef][gh]','adfh')
print(m.group())
m = re.match('[ab][cd][ef][gh]','bceg')
print(m.group())
m = re.match('[ab][cd][ef][gh]','abceh')
print(m)
m = re.match('ab[cd][ef][gh]','abceh')
print(m.group())
print(m)
m = re.match('abcd|efgh','efgh')
print(m.group())
print(m)
输出结果:
adfh
bceg
None
abceh
<re.Match object; span=(0, 5), match='abceh'>
efgh
<re.Match object; span=(0, 4), match='efgh'>