我正在尝试在python中为这些示例中的单引号或双引号编写正则表达式:
动物="猫"
动物="马"
动物='狗'
动物='牛'
尝试使用|
时出现空白re.compile("animal=\"|'(.+?)\"|'").findall
请帮忙。感谢
答案 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']
>>>