【发布时间】:2014-09-22 12:01:08
【问题描述】:
我想处理一个巨大的 HTML 电子书。我用 C# 编写了一个应用程序,可以很好地做到这一点,但我宁愿在 Notepad++ 中使用 Python 脚本来做到这一点。所以我写了最简单的正则表达式,它抛出:
匹配正则表达式的复杂度超出了预定义的范围。尝试重构正则表达式以使状态机做出的每个选择都明确无误。抛出这个异常是为了防止“永恒的”匹配需要无限期的时间来定位。
我对更改正则表达式不感兴趣,也不关心性能。我在哪里可以找到那些“预定义的界限”以便我可以更改它们,或者我该如何绕过它,以防万一?
编辑:这是一段带有正则表达式的代码:
editor.rereplace("li .+\}", "", re.S )
【问题讨论】:
-
它可能有助于我们查看正则表达式,即使您设置它保持不变。
-
说你不关心性能有点傻,因为程序警告你,由于无限递归,匹配可能会永远持续下去。您当前的正则表达式模式没有为
.+指定惰性匹配,这意味着匹配将持续到它看到的最后一个\}。如果每个li元素都在自己的行上,并且多行匹配默认为关闭,那么这不会造成问题,但这可能是您现在遇到的问题的一部分。此外,li和.+\}之间的空格是不必要的,因为.也匹配 ` `。请考虑使用li.+?\}。 -
它不会花很长时间,因为它已经过测试。我不想要一个懒惰的比赛,因为它不会完成任务。这个问题与我的正则表达式模式无关!
-
@Caustin: OP 可能不想匹配例如“lid”,所以空间很好保留
-
好的,那么你的问题根本就不是python问题?