Python RE - 用于匹配类似printf的格式字符串和转义引号的正则表达式

时间:2014-08-01 12:03:11

标签: python c++ regex printf

我正在python中编写一个小C ++预处理器,它应该找到类似printf的格式字符串。我需要的是一个正则表达式,它从第一个引号到第二个引号匹配,但忽略中间的所有转义引号('\“')。这是一个例子:

foo(bar, "Value of \"s\" is: %s", "foobar");

我需要一个正则表达式:

"Value of \"s\" is: %s"

到目前为止我所拥有的是:

(".*?")

但是我还没有办法忽略转义的引号。我是新手。如果有人能给我一个解决方案/小费,我将非常感激。

提前致谢!

1 个答案:

答案 0 :(得分:1)

您可以尝试以下正则表达式匹配第一个和第二个"之间的所有字符,

\".*?[^\\]\"

DEMO

>>> 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"

<强>解释

  • "匹配第一个双引号。
  • .*?匹配任何字符零次或多次。 ?之后*进行了不情愿的匹配。
  • [^\\]"匹配"(双引号),前面没有\符号。