最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

asp.net正則表達(dá)式刪除指定的HTML標(biāo)簽的代碼

 更新時間:2010年09月13日 00:14:20   作者:  
抓取某網(wǎng)頁的數(shù)據(jù)后(比如描述),如果照原樣顯示的話,可能會因?yàn)樗锩姘瑳]有閉合的HTML標(biāo)簽而打亂了格式,也可能它里面用了比較讓人 費(fèi)解 的HTML標(biāo)簽,把預(yù)訂的格式攪亂.
如果全盤刪除里面的 HTML 標(biāo)簽,可能會造成閱讀上的困難(比如 a, img 這些標(biāo)簽), 最好是刪除一部分,保留一部分.

正則表達(dá)式里,判斷 包含某些字符串 是非常容易理解的,但是如何判斷 不包含某些字符串 (是字符串,不是字符,是某些,不是某個) 確實(shí)是個費(fèi)解的事.
復(fù)制代碼 代碼如下:

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

這個正則是判斷HTML標(biāo)簽不包含 li / ul / a / img / br / span / b 的,就上面的要求來說,是要 刪除 除這里列出的HTML標(biāo)簽,這也是我摸索了很長時間才搞出來的.
(?!exp) 匹配后面跟的不是exp的位置
/?\s? 我一開始試著把它寫到最前面的 < 后面,但是測試失敗了.

下面是一個簡單的函數(shù),把要保留的TAG串起來,生成一個正則表達(dá)式,然后把不需要的TAG刪除...
復(fù)制代碼 代碼如下:

private static string RemoveSpecifyHtml(string ctx) {
string[] holdTags = { "a", "img", "br", "strong", "b", "span" };//要保留的 tag
// <(?!((/?\s?li)|(/?\s?ul)|(/?\s?a)|(/?\s?img)|(/?\s?br)|(/?\s?span)|(/?\s?b)))[^>]+>
string regStr = string.Format(@"<(?!((/?\s?{0})))[^>]+>", string.Join(@")|(/?\s?", holdTags));
Regex reg = new Regex(regStr, RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.IgnoreCase);


return reg.Replace(ctx, "");
}

修正:
上面的正則,如果保留了 li , 實(shí)際運(yùn)行會發(fā)現(xiàn) link 也給保留下來了, 保留 a 會把 addr 也給保留下來, 解決辦法就是加 \b 斷言.
復(fù)制代碼 代碼如下:

<(?!((/?\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) {
string[] holdTags = { "a", "img", "br", "strong", "b", "span", "li" };//保留的 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?{0})))[^>]+>", string.Join(@"\b)|(/?\s?", holdTags));
Regex reg = new Regex(regStr, RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.IgnoreCase);

return reg.Replace(ctx, "");
}

相關(guān)文章

最新評論

台北县| 广元市| 乌兰浩特市| 禹城市| 屯昌县| 新巴尔虎右旗| 阜新市| 天峻县| 涿州市| 金溪县| 诏安县| 永城市| 荣成市| 郎溪县| 大连市| 青川县| 石楼县| 丹棱县| 新沂市| 永宁县| 阿坝县| 翼城县| 吴旗县| 讷河市| 沅陵县| 共和县| 论坛| 洛宁县| 子洲县| 黔西县| 洛扎县| 台东市| 龙井市| 灵宝市| 池州市| 延庆县| 紫金县| 平江县| 高青县| 多伦县| 聂拉木县|