`
yy8354
  • 浏览: 79145 次
  • 性别: 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
分享到:
评论

相关推荐

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

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

    正则表达式

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

    基于知识图谱的数据录入+知识检索python有源码+项目说明+数据(结构化数据选取所需数据进行数据整合).zip

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

    zzcpython爬虫.rar

    爬虫通过模拟用户访问网页,解析网页的内容,从中抽取所需的数据,并将数据存储或进一步处理。 爬虫的工作过程通常如下: 1. 发送HTTP请求:爬虫根据预设的规则,向目标网站发送HTTP请求,并获取网页的内容。 2. ...

    baidupython爬虫.rar

    爬虫通过模拟用户访问网页,解析网页的内容,从中抽取所需的数据,并将数据存储或进一步处理。 爬虫的工作过程通常如下: 1. 发送HTTP请求:爬虫根据预设的规则,向目标网站发送HTTP请求,并获取网页的内容。 2. ...

    0x13douban-yingping.rar

    爬虫通过模拟用户访问网页,解析网页的内容,从中抽取所需的数据,并将数据存储或进一步处理。 爬虫的工作过程通常如下: 1. 发送HTTP请求:爬虫根据预设的规则,向目标网站发送HTTP请求,并获取网页的内容。 2. ...

    autohomepython爬虫.rar

    爬虫通过模拟用户访问网页,解析网页的内容,从中抽取所需的数据,并将数据存储或进一步处理。 爬虫的工作过程通常如下: 1. 发送HTTP请求:爬虫根据预设的规则,向目标网站发送HTTP请求,并获取网页的内容。 2. ...

    Python网络爬虫项目开发实战_数据抓取_编程案例解析实例详解课程教程.pdf

    一个爬虫,可以通过跟踪链接的方式下载我们所需的网页。虽然这个例子很有意思,却不够实用,因为爬虫在下载网页之后又将结果丢弃掉了。现在,我们需要让这个爬虫从每个网页中抽取一些数据,然后实现某些事情,这种...

    python抽取指定url页面的title方法

    今天简单使用了一下python的re模块和lxml模块,分别利用的它们提供的正则表达式和xpath来解析页面源码从中提取所需的title,xpath在完成这样的小任务上效率非常好,在这里之所以又使用了一下正则表达式是因为xpath在...

    本项目实现了知识图谱的数据录入.zip

    首先通过结构化数据选取所需数据进行数据整合,之后构建实体-关系-实体的三元组cypher语句,最后构建问题模板进行文本匹配模式的问答。 模板匹配中的语义槽选用正则抽取。 知识图谱是一种结构化的知识表达形式,它...

    python爬虫项目代码

    数据抽取:根据预先设定的规则,从解析后的HTML文档中提取所需的数据。这可以通过正则表达式、CSS选择器或XPath表达式来实现。 数据存储:将抽取的数据存储到本地文件、数据库或其他数据存储系统中,以供后续分析和...

    python项目开发实战入门 (实用性极强,方向全,最新)

    数据抽取:根据预先设定的规则,从解析后的HTML文档中提取所需的数据。这可以通过正则表达式、CSS选择器或XPath表达式来实现。 数据存储:将抽取的数据存储到本地文件、数据库或其他数据存储系统中,以供后续分析和...

    慧办公 H6.61

    24、1秒钟,抽取所需样本 (1)根据组距 抽取样本 (2)根据样本量抽取样本 25、电子教鞭/屏幕画笔【随意画随意擦,可调粗细、透明度,可撤销等】 26、绑定快捷键【实现多按键或多步骤的操作一键完成,也可以...

    C++网络爬虫项目

     如果所抽取的URL没有被抓取过,则将其排入“待抓取URL队列” 末尾,在 之后的抓取调度中重复第步,下载这个URL所对应的网页。 如此这般,形成WEBCRAWLER 网络爬虫实训项目 6 循环,直到“待抓取URL队列”空,这...

    入门学习Linux常用必会60个命令实例详解doc/txt

    要想查询系统提供哪些Shell,可以使用chsh -l 命令,见图1所示。 图1 系统可以使用的Shell类型 从图1中可以看到,笔者系统中可以使用的Shell有bash(缺省)、csh、sh、tcsh四种。 exit 1.作用 exit命令的作用是...

Global site tag (gtag.js) - Google Analytics