Python Regex中的错误? (re.ub与re.MULTILINE)

时间:2012-08-22 23:43:14

标签: python regex

我注意到Python的Regex库中有一些奇怪的行为,我不确定我是否做错了。

如果我使用re.sub()使用re.MULTILINE对其运行正则表达式。它似乎只取代了前几次出现。如果我关闭re.MULTILINE,使用re.subn(..., count = 0, flags = re.MULTILINE)或使用re.compile(..., re.MULTILINE)编译正则表达式,它会替换所有匹配项。

我在Ubuntu 12.04上运行Python 2.7。

我发布了一个随机的例子:

  • Pastebin.com - 来自终端的输出
  • codepad - 脚本,确认行为(除了re.subn(),这在2.5上是不同的)

有人可以在他们的机器上确认/拒绝这种行为吗?

编辑:已经实现我应该继续将这个发布在Python bug跟踪器上。 编辑2:报告的问题:http://bugs.python.org/msg168909

1 个答案:

答案 0 :(得分:16)

使用

re.sub(pattern, replace, text, flags=re.MULTILINE) 

而不是

re.sub(pattern, replace, text, re.MULTILINE) 

相当于

re.sub(pattern, replace, text, count=re.MULTILINE)

这是您代码中的错误。

请参阅re.sub()