簡體   English   中英

為什么即使使用RegexOptions.Multiline,我的正則表達式在跨越多行的html標簽上也不匹配?

[英]Why does my regex not match on html tags spanning multiple lines even when RegexOptions.Multiline is used?

我正在嘗試從以下文本中刪除標簽:

<P style=""MARGIN: 0in 0in 0pt"" class=MsoNormal><SPAN 
style=""COLOR: #1f497d""><FONT size=3 face=Calibri> </FONT></SPAN></P>

注意兩行。 因此,當我嘗試使用時:

Regex _html = new Regex("<.*?>", RegexOptions.Multiline);
tempHtml = _html.Replace(tempHtml, string.Empty);

它與<p><font></font></span></p>標記匹配,但似乎與<span>標記不匹配。

我究竟做錯了什么?

RegexOptions.Multiline處理\\Z\\A的含義。 RegexOptions.Singleline會更改. 表示所有字符, 包括換行符(= true)或排除換行符(= false)。

因此,如果要在標簽中包含換行符,請使用RegexOptions.Singleline

但是 ,我同意Bryan Crosby的評論,他建議您使用HtmlAgilityPack解析html而不是正則表達式。

我不確定REGEX如何與C#一起使用,但是大多數時候您必須轉義<和>。 這種模式在php中對我有用:

\<.*?\>

我認為Fischermaen想要說的是您使用了錯誤的選項,使用單行模式:

Regex _html = new Regex("<.*?>", RegexOptions.Singleline);
tempHtml = _html.Replace(tempHtml, string.Empty);

然后下載Expresso ,您可以輕松嘗試這些東西並測試您的表情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM