`
yy8354
  • 浏览: 80404 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

正文抽取所需正则

阅读更多

工作中同事帮忙写的正则,主要被我用于网页正文提取

 #region 相关正则表达式

 /// <summary>
 /// 去掉所有html标签
 /// </summary>
 private static readonly Regex FilterAll = new Regex(
 @"(\[([^=]*)(=[^\]]*)?\][\s\S]*?\[/\1\])|(?<lj>(?=[^\u4E00-\u9FA5\uFE30-\uFFA0,."");])<a\s+[^>]*>[^<]{2,}</a>(?=[^\u4E00-\u9FA5\uFE30-\uFFA0,."");]))|(?<Style><style[\s\S]+?/style>)|(?<select><select[\s\S]+?/select>)|(?<Script><script[\s\S]*?/script>)|(?<Explein><\!\-\-[\s\S]*?\-\->)|(?<li><li(\s+[^>]+)?>[\s\S]*?/li>)|(?<Html></?\s*[^> ]+(\s*[^=>]+?=['""]?[^""']+?['""]?)*?[^\[<]*>)|(?<Other>&[a-zA-Z]+;)|(?<Other2>\#[a-z0-9]{6})|(?<Space>\s+)|(\&\#\d+\;)",
 RegexOptions.ExplicitCapture
 | RegexOptions.Multiline
 | RegexOptions.IgnoreCase); //(?<Link><a[\s\S]*?</a>)|
 //(?<Style><style[\s\S]+?/style>)|(?<select><select[\s\S]+?/select>)|(?<Script><script[\s\S]*?/script>)|(?<Explein><\!\-\-[\s\S]*?\-\->)|(?<li><li(\s+[^>]+)?>[\s\S]*?/li>)|(?<Html></?\s*[^> ]+(\s*[^=>]+?=['""]?[^""']+?['""]?)*?[^\[<]*>)|(?<Other>&[a-zA-Z]+;)|(?<Other2>\#[a-z0-9]{6})|(?<Space>\s+)

 /// <summary>
 /// 找出title标签
 /// </summary>
 private static readonly Regex FindTitle = new Regex(
 @"<\s*/?title\s*>",
 RegexOptions.ExplicitCapture
 | RegexOptions.Multiline
 | RegexOptions.IgnoreCase);

 /// <summary>
 /// 找出title标签内容
 /// </summary>
 private static readonly Regex FindTitleContent = new Regex(
 @"<\s*/?title\s*>(?<Content>[\s\S]*?)<\s*/?title\s*>",
 RegexOptions.ExplicitCapture
 | RegexOptions.Multiline
 | RegexOptions.IgnoreCase);

 /// <summary>
 /// 找出h 和Strong标签
 /// </summary>
 private static readonly Regex FindHStrong = new Regex(
 @"<\s*/?h\s*>|<\s*/?strong\s*>",
 RegexOptions.ExplicitCapture
 | RegexOptions.Multiline
 | RegexOptions.IgnoreCase);

 /// <summary>
 /// 找出p 和br标签
 /// </summary>
 private static readonly Regex FindPB = new Regex(
 @"<\s*/?p\s*>|<\s*br\s*/?>|<\s*/?tr\s*>",
 RegexOptions.ExplicitCapture
 | RegexOptions.Multiline
 | RegexOptions.IgnoreCase);

 /// <summary>
 /// 找出nbsp标签
 /// </summary>
 private static readonly Regex FindNbsp = new Regex(
 @"&nbsp",
 RegexOptions.ExplicitCapture
 | RegexOptions.Multiline
 | RegexOptions.IgnoreCase);

 /// <summary>
 /// 找出结尾标签
 /// </summary>
 private static readonly Regex FindS = new Regex(
 @"(?<Content>[\s\S]*?)\$",
 RegexOptions.ExplicitCapture
 | RegexOptions.Multiline
 | RegexOptions.IgnoreCase);

 /// <summary>
 /// 找出是否为标准句
 /// </summary>
 private static readonly Regex IsSen = new Regex(
 @"[,.,。!!;;::……??《》“”""]",
 RegexOptions.ExplicitCapture
 | RegexOptions.Multiline
 | RegexOptions.IgnoreCase);

 /// <summary>
 /// 找出是否为垃圾句[strong][h]标签过多的
 /// </summary>
 private static readonly Regex IsWs = new Regex(
 @"\[\(h\)\]",
 RegexOptions.ExplicitCapture
 | RegexOptions.Multiline
 | RegexOptions.IgnoreCase);

 /// <summary>
 /// 找出是否为垃圾句冒号和·-过多的
 /// </summary>
 private static readonly Regex IsWsM = new Regex(
 @"\[·]|[-]|[::]",
 RegexOptions.ExplicitCapture
 | RegexOptions.Multiline
 | RegexOptions.IgnoreCase);

 /// <summary>
 /// 找出是否为BBS特征
 /// </summary>
 private static readonly Regex IsBbsInfo = new Regex(
 @"第[^楼]{1,50}楼|Powered\s*/?by[\s\S]*?Dvbbs|Powered\s*/?by[\s\S]*?Discuz",
 RegexOptions.ExplicitCapture
 | RegexOptions.Multiline
 | RegexOptions.IgnoreCase);
 
 /// <summary>
 /// 取KEYWORD
 /// </summary>
 private static readonly Regex mKeyWord = new Regex(
 @"<meta\s*name\s*=\s*['""]?keywords['""]?\s*content\s*=\s*['""]?(?<KeyWords>[^'"">]*)['""]?[^>]*>|<meta\s*content\s*=\s*['""]?(?<KeyWords>[^'"">]*)['""]?\s*name\s*=\s*['""]?keywords['""]?\s*[^>]*>
",RegexOptions.ExplicitCapture| RegexOptions.Multiline| RegexOptions.IgnoreCase);

 /// <summary>
 /// 取DESCRIPTION
 /// </summary>
 private static readonly Regex mDescription = new Regex(
 @"<meta\s*name\s*=\s*['""]?description['""]?\s*content\s*=\s*['""]?(?<description>[^'"">]*)['""]?[^>]*>|<meta\s*content\s*=\s*['""]?(?<description>[^'"">]*)['""]?\s*name\s*=\s*['""]?description['""]?\s*[^>]*>
",RegexOptions.ExplicitCapture| RegexOptions.Multiline| RegexOptions.IgnoreCase);
 
 /// <summary>
 /// 取Tags
 /// </summary>
 private static readonly Regex mTag = new Regex(
 @"<meta\s*name\s*=\s*['""]?tagwords['""]?\s*content\s*=\s*['""]?(?<tagwords>[^'"">]*)['""]?[^>]*>|<meta\s*content\s*=\s*['""]?(?<tagwords>[^'"">]*)['""]?\s*name\s*=\s*['""]?tagwords['""]?\s*[^>]*>
", RegexOptions.ExplicitCapture | RegexOptions.Multiline | RegexOptions.IgnoreCase);

 /// <summary>
 /// 找出是否为垃圾句:后字符号过少,:号前无“说”字,:号后无"关于"
 /// </summary>
 private static readonly Regex IsWsMM = new Regex(
 @"^[^说\s]{0,8}?[::].{0,10}$",
 RegexOptions.ExplicitCapture
 | RegexOptions.Multiline
 | RegexOptions.IgnoreCase);

 /// <summary>
 /// 找出spider写入的url标记
 /// </summary>
 private static readonly Regex txtUrl = new Regex(
 @"当前URL为:http://(?<URL>.*)",
 RegexOptions.ExplicitCapture
 | RegexOptions.Multiline
 | RegexOptions.IgnoreCase);

 /// <summary>
 /// 找出spider写入的锚点描述标记
 /// </summary>
 private static readonly Regex txtDescription = new Regex(
 @"当前链接描述为:(?<Describe>.*)",
 RegexOptions.ExplicitCapture
 | RegexOptions.Multiline
 | RegexOptions.IgnoreCase);

 ///// <summary>
 ///// 取需要a标签
 ///// </summary>
 //private static readonly Regex cleanFirst = new Regex(
 // @"([\u4E00-\u9FA5]|[\uFE30-\uFFA0]|[,."");])(?<Robbish1><a\s+[^>]*>)[^<]{1,6}(?<Robbish2></a>)([\u4E00-\u9FA5]|[\uFE30-\uFFA0]|[,."");])", RegexOptions.ExplicitCapture | RegexOptions.Multiline | RegexOptions.IgnoreCase);

 #endregion
分享到:
评论

相关推荐

    基于正则表达式的文本抽取软件

    在这款软件中,正则表达式不仅用于精确匹配,还可能用于模糊搜索,使得用户能以更灵活的方式查找所需信息。全文检索的实现通常包括索引构建、查询解析和匹配等步骤。软件可能采用了倒排索引等高效的数据结构来加速...

    正则表达式 正则表达式资料 正则表达式教程

    - **数据提取**:从复杂的文本中抽取所需的信息。 - **文本替换**:按照特定规则批量修改文本内容。 ### 二、正则表达式学习资源推荐 #### 2.1 deerchao的《正则表达式30分钟入门教程》 此教程由deerchao编写,...

    基于知识图谱的数据录入+知识检索python有源码+项目说明+数据(模板匹配中的语义槽选用正则抽取).zip

    模板匹配中的语义槽选用正则抽取).zip基于知识图谱的数据录入+知识检索python有源码+项目说明+数据(结构化数据选取所需数据进行数据整合,之后构建实体-关系-实体的三元组cypher语句,最后构建问题模板进行文本...

    正则表达式(里面包含大量的正则表达式)

    - 正则表达式可能因语言和环境的不同而略有差异,需了解所使用的环境的具体规则。 - 正则表达式过于复杂可能导致性能下降,因此应尽可能简洁和高效。 - 谨慎使用全局搜索和替换,因为可能会改变原有文本结构。 ...

    精通正则表达式(第三版)简体中文版

    4. **数据提取**:从复杂的数据中提取所需的信息,如从网页中抓取特定内容。 5. **日志分析**:从系统日志中提取关键信息进行监控和报警。 #### 五、不同环境下的正则表达式 - **Perl兼容正则表达式(PCRE)**:Perl...

    根据正则生成测试数据

    这可以通过在上述函数基础上添加一个循环来实现,每次调用生成一个字符串,直到达到所需数量。此外,还可以考虑将生成的字符串保存到文件中,方便后续的自动化测试使用。 总的来说,根据正则表达式生成测试数据是一...

    基于Web的信息抽取技术现状与发展

    Web信息抽取技术作为一种有效的手段,旨在从网页中精准地提取所需数据,并将其转化为结构化或半结构化的格式,如XML、关系数据库或面向对象的数据,从而实现信息的有效管理和高效检索。 #### Web信息抽取技术概述 ...

    正则表达式

    尾部的数字,那么如果我们将模式的数字部分放在括号中 (/ [a-z] + (\d+)/) ,我们就可以从所检索到的任何匹配中抽取数字了,之后我们会对此进行解析的. 代括号的子表达式的另一个用途是,允许我们在同一正则表达式的...

    Regular Expressions Cookbook 正则手册 2009

    - **数据提取**:从复杂的文本中抽取所需的信息。 #### 三、基本技能与案例分析 第二章《Basic Regular Expression Skills》重点介绍了正则表达式的基本构建块及其常见应用场景。这一章节包含了多个实用技巧和实例...

    正则表达式学习资料

    4. **数据提取**:从大量文本中抽取所需的信息,例如从日志文件中提取错误代码。 #### 二、正则表达式的构成 正则表达式由一系列的字符和特殊符号组成,分为以下几个主要部分: ##### 1. 普通字符 - **定义**:...

    js正则表达式

    3. **字符串抽取**:从复杂的字符串中精确抽取所需的信息,比如从一段文本中抽取所有的日期或网址链接。 #### 二、正则表达式语法详解 正则表达式由普通字符和特殊字符(元字符)组成,其中元字符具有特殊的含义,...

    PHP之正则表达式详解

    - **数据提取:** 从较大的文本块中抽取所需的信息片段。 - **格式验证:** 检查输入数据是否符合预期的格式,例如邮箱地址、电话号码等。 #### PHP中的正则表达式处理函数 PHP提供了两种类型的正则表达式函数库:...

    基于Web的新闻信息抽取

    - **作用**:通过预先定义的规则,包装器能够自动地从网页中抽取所需信息,并将其转换为结构化的格式。 #### 实验案例分析 - **面向奥运会新闻的信息抽取系统** - **系统架构**:该系统采用了上述提到的混合...

    用正则表达式写的网络蜘蛛

    总的来说,正则表达式网络蜘蛛是IT领域的一个实用工具,它能够高效地从网页中抓取所需信息。在C#环境下,结合HTTP请求、HTML解析和正则表达式,我们可以构建出针对特定任务(如获取淘宝商家名称)的定制化爬虫。然而...

    正则表达式详解

    - **文本提取**:从大量文本中提取所需信息,如网页爬虫中抽取URL或关键词。 6. **学习资源** - 掌握正则表达式需要实践和理解,可以通过在线测试工具如Regex101或RegExr进行练习。 - 阅读相关教程,如《正则...

    DeepWeb信息抽取研究

    4. **结果抽取**:基于文档对象模型抽取所需的结构化数据。 5. **数据分析**:对抽取的数据进行分析,评估抽取方法的有效性和准确性。 通过实验结果的分析,研究人员验证了所提方法的准确性,并指出了存在的不足之...

    正则表达式抓取网页数据制作小词典

    总的来说,通过掌握正则表达式,我们可以有效地从网页中抽取所需信息,制作出具有实用价值的小词典。这个过程中,理解正则表达式的语法,熟悉HTML结构,以及合理利用编程语言进行数据处理,都是至关重要的技能。

    解析网页利器组合(正则、jsoup、beanshell、dozer)资源

    通过熟练掌握正则表达式的语法和用法,开发者可以高效地从复杂的HTML代码中抽取所需信息。 接着,Jsoup是一个Java库,专为处理真实世界的HTML而设计。它提供了一套丰富的API,使得解析、遍历和修改HTML文档变得简单...

Global site tag (gtag.js) - Google Analytics