這是一個奇怪的.NET正則表達式問題,我找不出來。我試圖解開我的論壇應用程序中的一些HTML。我沒有改變代碼,但在某些環境中,正則表達式根本不會返回。我可以重現它在應用程序:掛用高CPU的.NET正則表達式
線66:https://github.com/POPWorldMedia/POPForums/blob/master/PopForums/Services/TextParsingService.cs
text = Regex.Replace(text, @"(<iframe)(\S+)*(src=""http://www.youtube.com/embed/)(\S+)("")(*\S+)*(*/iframe>)", "http://www.youtube.com/watch?v=$4", RegexOptions.IgnoreCase);
它窒息輸入字符串是:
<p>This is an <strong>important</strong> <em>preview</em> of a post.</p>[quote]<p>This is a quote.<br /></p>[/quote]<p><iframe width="640" height="360" src="http://www.youtube.com/embed/Zey3WWThErw" frameborder="0" allowfullscreen></iframe></p><p>O look! YouTube!</p>
它最終會超時這裏: http://regexlib.com/RETester.aspx
在這種情況下,主機進程(本例中爲IIS)在本地執行大約50%(我假設有一個核心),並且永不放棄或返回。我完全被難住了。 Azure中的其中一個網站上運行着相同的代碼,它不會在那裏窒息。
強制性:http://stackoverflow.com/a/1732454/3312 – 2014-10-03 20:25:11
是啊,我看到過,我傾向於拒絕它。這是一種已知和可預測的模式。 – 2014-10-03 20:40:32