python中的正则表达式使用OR表示单引号或双引号

时间:2015-07-08 17:53:37

标签: python regex

我正在尝试在python中为这些示例中的单引号或双引号编写正则表达式:

动物="猫"

动物="马"

动物='狗'

动物='牛'

尝试使用|

时出现空白
re.compile("animal=\"|'(.+?)\"|'").findall

请帮忙。感谢

2 个答案:

答案 0 :(得分:1)

您可以利用反向引用:

r = re.compile(r"""animal=(["'])(.+?)\1""")

这可以保证开始和结束字符是相同的。

是时候测试它了:

assert r.search('animal="cat"').group(2) == "cat"
assert r.search('animal="horse"').group(2) == "horse"
assert r.search("animal='dog'").group(2) == "dog"
assert r.search("animal='cow'").group(2) == "cow"

答案 1 :(得分:0)

您的逻辑OR不适用于'"而是使用字符类:

>>> s="""animal="cat"
... 
... animal="horse"
... 
... animal='dog'
... 
... animal='cow'"""
>>> 
>>> re.findall(r"""animal=["'](.+?)["']""",s)
['cat', 'horse', 'dog', 'cow']
>>>