Skip to main content
 首页 » 编程设计

c#之无限循环中的 .NET 正则表达式

2024年01月18日34lyj

我正在使用 .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。