[英]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.