工作中同事帮忙写的正则,主要被我用于网页正文提取
#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(
@" ",
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编写,...
模板匹配中的语义槽选用正则抽取).zip基于知识图谱的数据录入+知识检索python有源码+项目说明+数据(结构化数据选取所需数据进行数据整合,之后构建实体-关系-实体的三元组cypher语句,最后构建问题模板进行文本...
- 正则表达式可能因语言和环境的不同而略有差异,需了解所使用的环境的具体规则。 - 正则表达式过于复杂可能导致性能下降,因此应尽可能简洁和高效。 - 谨慎使用全局搜索和替换,因为可能会改变原有文本结构。 ...
4. **数据提取**:从复杂的数据中提取所需的信息,如从网页中抓取特定内容。 5. **日志分析**:从系统日志中提取关键信息进行监控和报警。 #### 五、不同环境下的正则表达式 - **Perl兼容正则表达式(PCRE)**:Perl...
这可以通过在上述函数基础上添加一个循环来实现,每次调用生成一个字符串,直到达到所需数量。此外,还可以考虑将生成的字符串保存到文件中,方便后续的自动化测试使用。 总的来说,根据正则表达式生成测试数据是一...
Web信息抽取技术作为一种有效的手段,旨在从网页中精准地提取所需数据,并将其转化为结构化或半结构化的格式,如XML、关系数据库或面向对象的数据,从而实现信息的有效管理和高效检索。 #### Web信息抽取技术概述 ...
尾部的数字,那么如果我们将模式的数字部分放在括号中 (/ [a-z] + (\d+)/) ,我们就可以从所检索到的任何匹配中抽取数字了,之后我们会对此进行解析的. 代括号的子表达式的另一个用途是,允许我们在同一正则表达式的...
- **数据提取**:从复杂的文本中抽取所需的信息。 #### 三、基本技能与案例分析 第二章《Basic Regular Expression Skills》重点介绍了正则表达式的基本构建块及其常见应用场景。这一章节包含了多个实用技巧和实例...
4. **数据提取**:从大量文本中抽取所需的信息,例如从日志文件中提取错误代码。 #### 二、正则表达式的构成 正则表达式由一系列的字符和特殊符号组成,分为以下几个主要部分: ##### 1. 普通字符 - **定义**:...
3. **字符串抽取**:从复杂的字符串中精确抽取所需的信息,比如从一段文本中抽取所有的日期或网址链接。 #### 二、正则表达式语法详解 正则表达式由普通字符和特殊字符(元字符)组成,其中元字符具有特殊的含义,...
- **数据提取:** 从较大的文本块中抽取所需的信息片段。 - **格式验证:** 检查输入数据是否符合预期的格式,例如邮箱地址、电话号码等。 #### PHP中的正则表达式处理函数 PHP提供了两种类型的正则表达式函数库:...
- **作用**:通过预先定义的规则,包装器能够自动地从网页中抽取所需信息,并将其转换为结构化的格式。 #### 实验案例分析 - **面向奥运会新闻的信息抽取系统** - **系统架构**:该系统采用了上述提到的混合...
总的来说,正则表达式网络蜘蛛是IT领域的一个实用工具,它能够高效地从网页中抓取所需信息。在C#环境下,结合HTTP请求、HTML解析和正则表达式,我们可以构建出针对特定任务(如获取淘宝商家名称)的定制化爬虫。然而...
- **文本提取**:从大量文本中提取所需信息,如网页爬虫中抽取URL或关键词。 6. **学习资源** - 掌握正则表达式需要实践和理解,可以通过在线测试工具如Regex101或RegExr进行练习。 - 阅读相关教程,如《正则...
4. **结果抽取**:基于文档对象模型抽取所需的结构化数据。 5. **数据分析**:对抽取的数据进行分析,评估抽取方法的有效性和准确性。 通过实验结果的分析,研究人员验证了所提方法的准确性,并指出了存在的不足之...
总的来说,通过掌握正则表达式,我们可以有效地从网页中抽取所需信息,制作出具有实用价值的小词典。这个过程中,理解正则表达式的语法,熟悉HTML结构,以及合理利用编程语言进行数据处理,都是至关重要的技能。
通过熟练掌握正则表达式的语法和用法,开发者可以高效地从复杂的HTML代码中抽取所需信息。 接着,Jsoup是一个Java库,专为处理真实世界的HTML而设计。它提供了一套丰富的API,使得解析、遍历和修改HTML文档变得简单...