正規表示式刪除指定的HTML 標籤

2022-02-11 02:42:12 字數 1360 閱讀 5281

1.抓取某網頁的資料後(比如描述),如果照原樣顯示的話,可能會因為它裡面包含沒有閉合的html標籤而打亂了格式,也可能它裡面用了比較讓人 "費解" 的html標籤,把預訂的格式攪亂. 如果全盤刪除裡面的 html 標籤,可能會造成閱讀上的困難(比如 a, img 這些標籤), 最好是刪除一部分,保留一部分.

下面是乙個簡單的函式,把要保留的tag串起來,生成乙個正規表示式,然後把不需要的tag刪除...

private static string removespecifyhtml(string ctx) ;//要保留的 tag

// <(?!((/?\s?li)|(/?\s?ul)|(/?\s?a)|(/?\s?img)|(/?\s?br)|(/?\s?span)|(/?\s?b)))[^>]+>

string regstr = string.format(@"<(?!((/?\s?)))[^>]+>", string.join(@")|(/?\s?", holdtags));

regex reg = new regex(regstr, regexoptions.compiled | regexoptions.multiline | regexoptions.ignorecase);

return reg.replace(ctx, "");

}----------------------------

修正:上面的正則,如果保留了 li , 實際執行會發現 link 也給保留下來了, 保留 a 會把 addr 也給保留下來, 解決辦法就是加 \b 斷言.

<(?!((/?\s?li\b)|(/?\s?ul)|(/?\s?a\b)|(/?\s?img\b)|(/?\s?br\b)|(/?\s?span\b)|(/?\s?b\b)))[^>]+>

private static string removespecifyhtml(string ctx) ;//保留的 tag

// <(?!((/?\s?li\b)|(/?\s?ul\b)|(/?\s?a\b)|(/?\s?img\b)|(/?\s?br\b)|(/?\s?span\b)|(/?\s?b\b)))[^>]+>

string regstr = string.format(@"<(?!((/?\s?)))[^>]+>", string.join(@"\b)|(/?\s?", holdtags));

regex reg = new regex(regstr, regexoptions.compiled | regexoptions.multiline | regexoptions.ignorecase);

return reg.replace(ctx, "");}2.

提取html中img標籤的

public static string getimgurllist(string html)

HTML 正規表示式

表示式概念 一種字串檢索模式 表現為字串形式的object物件 可進行文字搜尋和替換。在前端頁面中一般用於表單驗證 語法 正則字面量表達方式 正規表示式主體 修飾符 可選 var reg abc i 實際開發中正規表示式會配合字串的search和replace方法來使用 search 用於檢索與正規...

正規表示式相關 正規表示式處理html內容

前面關於顯示html文字用了瀏覽器控制項來處理 這個不過是為了解決燃眉之急不得已才使用。其實最好還是使用正規表示式處理,也就是自己寫乙個html文字直譯器,當然這個實現起來也是不容易的,首先你得將所有html文字標籤羅列出來,然後一一翻譯。下面先搞乙個簡單的例子吧。public static str...

常用HTML正規表示式

常用html正規表示式 1.只能輸入數字和英文的 2.只能輸入數字的 3.只能輸入全形的 4.只能輸入漢字的 var regu 0 9a za z 0 9a za z 0 9a za z 0 9a za z a za z0 9 a za z net net com com gov gov mil m...