这可能在python中重新进行吗?

时间:2012-03-27 06:07:44

标签: python regex

在python中的正则表达式

[abc]匹配a或b或c

如何匹配ab或bc的[abc]?这可能吗?

2 个答案:

答案 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,它不会捕获匹配的子模式。