Python - 如何在正则表达式中忽略转义字符

时间:2015-01-11 13:22:00

标签: regex python-2.7

我的目标是确定这种模式:

STR("<some_string>")

我已经构建了这个正则表达式:

(STR\()"(.+?)("\))

这在大多数情况下都能正常工作,但是在这个例子中失败了:

STR("test \") string")

在上述情况下,我希望获得test \") string

1 个答案:

答案 0 :(得分:1)

我建议你添加一个负面的lookbehind断言。

(STR\()"(.+?)(?<!\\)("\))

DEMO

示例:

>>> s1 = r'STR("<some_string>")'
>>> s2 = r'STR("test \") string")'
>>> re.findall(r'STR\("(.+?)(?<!\\)"\)', s1)
['<some_string>']
>>> re.findall(r'STR\("(.+?)(?<!\\)"\)', s2)
['test \\") string']

(?<!\\)"否定的基于断言的断言模式会断言双引号不会以反斜杠字符开头。

STR\("((?:\\"|[^"])*)"\)

DEMO