`

利用正则表达式去掉网页中的HTML 标签

阅读更多

  抓取某网页的数据后(比如描述),如果照原样显示的话,可能会因为它里面包含没有闭合的HTML标签而打乱了格式,也可能它里面用了比较让人 "费解" 的HTML标签,把预订的格式搅乱. 如果全盘删除里面的 HTML 标签,可能会造成阅读上的困难(比如 a, img 这些标签), 最好是删除一部分,保留一部分.

  正则表达式里,判断 包含某些字符串 是非常容易理解的,但是如何判断 不包含某些字符串 (是字符串,不是字符,是某些,不是某个) 确实是个费解的事.

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

  这个正则是判断HTML标签不包含 li / ul / a / img / br / span / b 的,就上面的要求来说,是要 删除 除这里列出的HTML标签,这也是我摸索了很长时间才搞出来的.

  (?!exp) 匹配后面跟的不是exp的位置

  /?\s? 我一开始试着把它写到最前面的 < 后面,但是测试失败了.

  下面是一个简单的函数,把要保留的TAG串起来,生成一个正则表达式,然后把不需要的TAG删除...

  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 , 实际运行会发现 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) {

  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, "");

  }

 

分享到:
评论

相关推荐

    利用正则表达式批处理含链接内容文档

    由于项目需求,自己需要将带有链接的标签去除,例如 &lt;a href="/zhaoyao/17-66.html"&gt;头晕,转换后的文档为头晕。...读取每一个筛选到的文件,利用正则表达式去除超链接符号。 3.将每一个处理过的文件重写回源文件。

    Python使用正则表达式去除(过滤)HTML标签提取文字功能

    下面给大家介绍下Python使用正则表达式去除(过滤)HTML标签提取文字,具体代码如下所示: # -*- coding: utf-8-*- import re ##过滤HTML中的标签 #将HTML中标签等信息去掉 #@param htmlstr HTML字符串. def filter_...

    winform 去除html标签的正则表达式

    利用正则表达式去除html标签,去除样式,只选择内容,

    java 正则表达式

    利用正则表达式限制网页表单里的文本框输入内容: 用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('...

    editplus 代码编辑器html c++ jsp css

    括号在正则表达式中表示,文本中的字符匹配括号中任意一个字符即符合查找条件。 (3)按一下空格键,添加空格符。空格符是空行的一个组成成分。 (4)选择“制表符”,添加代表制表符的“\t”。 (5)移动光标,将...

    最全的用正则批量去除Teleport Pro整站下载文件冗余代码

    tppabs html原文件中tppabs标记是Teleport Pro软件留下的...利用DreamWeaver正则表达式批量清除tppabs标签更加容易、快捷。 方法如下: 使用DW替换功能: 查找范围:整个当前本地站点 搜索:源代码 查找:\btppabs=”h

    Editplus 3[1].0

    括号在正则表达式中表示,文本中的字符匹配括号中任意一个字符即符合查找条件。 (3)按一下空格键,添加空格符。空格符是空行的一个组成成分。 (4)选择“制表符”,添加代表制表符的“\t”。 (5)移动光标,将...

    EditPlus 2整理信箱的工具

    括号在正则表达式中表示,文本中的字符匹配括号中任意一个字符即符合查找条件。 (3)按一下空格键,添加空格符。空格符是空行的一个组成成分。 (4)选择“制表符”,添加代表制表符的“\t”。 (5)移动光标,将...

    python项目基于模板的药品名称识别系统.zip

    3. **模式匹配**:利用正则表达式或其他模式匹配算法来识别输入文本中的药品名称。 4. **模糊匹配与验证**:当直接匹配无法找到精确结果时,采用模糊匹配算法来找出最接近的候选名称,并通过额外的规则或词典进行...

    C#编程经验技巧宝典

    85 &lt;br&gt;0131 巧截字符串的数字 86 &lt;br&gt;0132 如何存储变长字符串 86 &lt;br&gt;0133 在进行字符串比较时忽略大小写 87 &lt;br&gt;0134 如何去除字符串尾空格 87 &lt;br&gt;0135 如何去掉字符串中所有空格 ...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例110 通过正则表达式对字符串进行匹配查找 141 实例111 通过IP地址查找主机所在地 142 实例112 解决用substr()函数对中文字符串截取时出现乱码的问题 143 实例113 字符串与HTML标记相互转换 144 实例114 运用...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例110 通过正则表达式对字符串进行匹配查找 141 实例111 通过IP地址查找主机所在地 142 实例112 解决用substr()函数对中文字符串截取时出现乱码的问题 143 实例113 字符串与HTML标记相互转换 144 实例114 运用...

    js使用小技巧

    HTML标签 document.documentElement.innerHTML 第一个style标签 document.styleSheets[0] style标签里的第一个样式 document.styleSheets[0].rules[0] 防止点击空链接时,页面往往重置到页首端。 ()"&gt;word...

    精易模块[源码] V5.15

    9、改善“网页_访问”中最后一个参数(代理地址)为“”符号时无法访问网页,感谢易友【z00544】反馈。 精易模块 V3.82 what’s new:(20140816) 1、修复“时间_取现行时间戳”有时不能正常返回13位时间戳,当...

    freemarker总结

    上面的代码中的逻辑表达式用括号括起来主要是因为里面有&gt;符号,由于FreeMarker会将&gt;符号当成标签的结束字符,可能导致程序出错,为了避免这种情况,我们应该在凡是出现这些符号的地方都使用括号. Pythons are ...

Global site tag (gtag.js) - Google Analytics