在python中的正则表达式
[abc]
匹配a或b或c
如何匹配ab或bc的[abc]
?这可能吗?
答案 0 :(得分:7)
使用|
正则表达式运算符指定多种可能性:
>>> import re
>>> pattern = re.compile("ab|bc")
>>>
>>> print pattern.match("abbbb")
<_sre.SRE_Match object at 0x105117918>
>>> print pattern.match("fooo")
None
>>> print pattern.match("bcdd")
<_sre.SRE_Match object at 0x105117918>
>>> print pattern.match("abc")
<_sre.SRE_Match object at 0x105117918>
如果它是更大表达式的一部分,请将它们括在括号中:
>>> pattern = re.compile("(red|green) light")
>>> print pattern.match("red light")
<_sre.SRE_Match object at 0x105117918>
>>> print pattern.match("red lights everywhere")
<_sre.SRE_Match object at 0x1051116c0>
>>> print pattern.match("green lights forever")
<_sre.SRE_Match object at 0x105117918>
>>> print pattern.match("blue lights begone")
None
有关所有选项,请参阅Python文档中的regular expression syntax。
答案 1 :(得分:1)
[abc]
被称为 character class 。它匹配方括号之间给出的字符集中的一个。这适用于单个字符,但不适用于字符序列。
对于字符序列,您需要 alternation ,这看起来像a|b|c
。这相当于[abc]
,但现在你可以放入序列。
ab|bc
将匹配“ab”或“bc”
如果替换是较大表达式的一部分,则需要将其组合在一起
(?:ab|bc)
(?:...)
是non capturing group,它不会捕获匹配的子模式。