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

Inf*_*tus 1 c# regex vb.net visual-studio

我正在使用.NET正则表达式来删除HTML代码.

使用类似的东西:

<title>(?<Title>[\w\W]+?)</title>[\w\W]+?<div class="article">(?<Text>[\w\W]+?)</div>
Run Code Online (Sandbox Code Playgroud)

这种方法在99%的情况下有效,但有时在解析时...

Regex.IsMatch(HTML, Pattern)
Run Code Online (Sandbox Code Playgroud)

解析器只是阻塞,它将继续在这行代码上持续几分钟或无限期.

这是怎么回事?

Jan*_*rts 6

当您的HTML字符串实际包含适合该模式的HTML时,您的正则表达式将正常工作.但是当你的HTML不符合模式时,例如,如果最后一个标签丢失,你的正则表达式将展示我称之为" 灾难性的回溯 ".单击该链接并向下滚动到"快速匹配完整的HTML文件"部分.它完全描述了您的问题.[\ W\W] +?是一种复杂的说法.+?使用RegexOptions.SingleLine.