我正在使用 .NET 正则表达式去除 HTML 代码。
使用类似的东西:
<title>(?<Title>[\w\W]+?)</title>[\w\W]+?<div class="article">(?<Text>[\w\W]+?)</div>
这在 99% 的时间都有效,但有时,在解析时...
Regex.IsMatch(HTML, Pattern)
解析器只是阻塞,它会继续处理这行代码几分钟或无限期。
这是怎么回事?
请您参考如下方法:
当您的 HTML 字符串实际包含符合该模式的 HTML 时,您的正则表达式将正常工作。但是当你的 HTML 不符合模式时,例如如果缺少最后一个标记,您的正则表达式将显示我所说的“catastrophic backtracking”。单击该链接并向下滚动到“快速匹配完整的 HTML 文件”部分。它准确地描述了你的问题。 [\w\W]+? .+ 是一种复杂的表达方式?使用 RegexOptions.SingleLine。
