亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用C#正則表達式刪除HTML標記

使用C#正則表達式刪除HTML標記

慕慕森 2019-06-26 13:37:25
使用C#正則表達式刪除HTML標記如何使用C#正則表達式替換/刪除所有HTML標記,包括尖括號?誰能幫我弄一下密碼嗎?
查看完整描述

3 回答

?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

如前所述,不應使用正則表達式處理XML或HTML文檔。它們在HTML和XML文檔中的性能不太好,因為無法以一般的方式表示嵌套結構。

你可以用以下方法。

String result = Regex.Replace(htmlDocument, @"<[^>]*>", String.Empty);

這在大多數情況下都是可行的,但也會出現一些情況(例如,包含尖括號的CDATA),這些情況不能像預期的那樣工作。


查看完整回答
反對 回復 2019-06-26
?
慕的地6264312

TA貢獻1817條經驗 獲得超6個贊

這個問題太寬泛了,無法確定地回答。你是說從一個真實的HTML文檔中刪除所有標簽,就像網頁一樣?如果是這樣,你必須:

  • 刪除<!DOCTYPE聲明或<?xml Prolog(如果它們存在)
  • 刪除所有SGML注釋
  • 刪除整個Head元素
  • 刪除所有腳本和樣式元素
  • Grabthar-知道用表單和表元素做什么嗎?
  • 移除其余的標簽
  • 從CDATA節中刪除<![CDATA[和]>序列,但將其內容單獨保留

這只是我的頭頂-我相信還有更多。一旦你完成了所有這些,你最終會得到一些地方的單詞、句子和段落,而另一些地方則會出現大量無用的空格。

但是,假設您只使用一個片段,并且只需刪除所有標記即可,下面是我將使用的正則表達式:

@"(?></?\w+)(?>(?:[^>'""]+|'[^']*'|""[^""]*"")*)>"

在自己的選項中匹配單引號和雙引號字符串足以解決屬性值中的尖括號問題。我不認為有任何必要顯式匹配標記中的屬性名稱和其他內容,就像Ryan的答案中的正則表達式那樣;第一個選項處理了所有這些。

如果你想知道這些(?>...)構造,它們是原子群..它們使正則表達式更高效,但更重要的是,它們防止了失控的回溯,這是您在混合交替和嵌套量詞時應該注意的事情,就像我所做的那樣。我不認為這會是一個問題,但我知道如果我不提,其他人會。;-)

當然,這個正則表達式并不完美,但它可能是您所需要的最好的。


查看完整回答
反對 回復 2019-06-26
  • 3 回答
  • 0 關注
  • 798 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號