我正在python中编写一个小C ++预处理器,它应该找到类似printf的格式字符串。我需要的是一个正则表达式,它从第一个引号到第二个引号匹配,但忽略中间的所有转义引号('\“')。这是一个例子:
foo(bar, "Value of \"s\" is: %s", "foobar");
我需要一个正则表达式:
"Value of \"s\" is: %s"
到目前为止我所拥有的是:
(".*?")
但是我还没有办法忽略转义的引号。我是新手。如果有人能给我一个解决方案/小费,我将非常感激。
提前致谢!
答案 0 :(得分:1)
您可以尝试以下正则表达式匹配第一个和第二个"
之间的所有字符,
\".*?[^\\]\"
>>> s = r'foo(bar, "Value of \"s\" is: %s", "foobar");'
>>> m = re.search(r'".*?[^\\]"', s)
>>> result = m.group(0)
>>> print result
"Value of \"s\" is: %s"
<强>解释强>
"
匹配第一个双引号。.*?
匹配任何字符零次或多次。 ?
之后*
进行了不情愿的匹配。[^\\]"
匹配"
(双引号),前面没有\
符号。