//把所有HTML标签找出来
哈哈,继 昨天的那个正则表达式之后又写了一个更长的Regular Expression,全长527,是用于查找出所有的XHTML/HTML的标记外面的所有空格,并将之转换为 的。 希望这个能够解决dudu提的一个cnblogs的bug:)即使不能解决问题也算是对System.Text.RegularExpression.Regex的一个练笔了:)
(?:(?:\<(?:Style)(?:\s+(?:[\w-]+)(?:=(?:[^\s\>\<]*|\"[\s\S]*?\"|\'[\s\S]*?\'))?)*\s*(?:/)?\>)(?:[\s\S]*?)(?:\</(?:Style)\>))|(?:(?:\<(?:script)(?:\s+(?:[\w-]+)(?:=(?:[^\s\>\<]*|\"[\s\S]*?\"|\'[\s\S]*?\'))?)*\s*(?:/)?\>)(?:[\s\S]*?)(?:\</(?:script)\>))|(?:\<!(?:[\w-]+)(?:\s+(?:[\w-]+|\"[\s\S]*?\"|\'[\s\S]*?\'))*\s*\>)|(?:\<!--[\s\S]*?--\>)|(?:\<(?:[\w-]+)(?:\s+(?:[\w-]+)(?:=(?:[^\s\>\<]*|\"[\s\S]*?\"|\'[\s\S]*?\'))?)*\s*(?:/)?\>)|(?:\</(?:[\w-]+)\>)|(?:\<!\[CDATA\[(?:[\s\S]*?)\]\]\>)|(?:(?:(?<blank>[ ]+)|[^ \<\>])+)
再给个更长的(全长765)正则表达式,这个算是我写的最长的正则表达式了。其实上面给出的第一个Regex是下面这个的一个专用于捕获blank的简化版本。
虽然长,但很有用,可以解析出整个XHTML/HTML页面的所有元素和结构来:)解析后的内容都分别保存在named groups中了,可以通过match.Groups["name"];来提取,比如match.Groups["tag"];match.Groups["attribute"];match.Groups["Style_Block";match.Groups["XML_Comment"];等,感兴趣的不妨试一试就知道了:)
(?#Copyright 2005, by Laser Lu.)(?<Style_Block>(?<begin>\<(?<tag>style)(?:\s+(?<attribute>[\w-:]+)(?:=(?<value>[^\s\>\<]*|\"[\s\S]*?\"|\'[\s\S]*?\'))?)*\s*(?:/)?\>)(?<body>[\s\S]*?)(?<end>\</\k<tag>\>))|(?<Script_Block>(?<begin>\<(?<tag>script)(?:\s+(?<attribute>[\w-:]+)(?:=(?<value>[^\s\>\<]*|\"[\s\S]*?\"|\'[\s\S]*?\'))?)*\s*(?:/)?\>)(?<body>[\s\S]*?)(?<end>\</\k<tag>\>))|(?<XML_Directive>\<!(?<name>[\w-:]+)(?:\s+(?<argument>[\w-:]+|\"[\s\S]*?\"|\'[\s\S]*?\'))*\s*\>)|(?<XML_Comment>\<!--[\s\S]*?--\>)|(?<Beginning_Tag>\<(?<tag>[\w-:]+)(?:\s+(?<attribute>[\w-:]+)(?:=(?<value>[^\s\>\<]*|\"[\s\S]*?\"|\'[\s\S]*?\'))?)*\s*(?:/)?\>)|(?<Ending_Tag>\</(?<tag>[\w-:]+)\>)|(?<XML_CDATA>\<!\[CDATA\[(?<data>[\s\S]*?)\]\]\>)|(?<XML_Literal>(?:(?<blank>[ ]+)|[^ \<\>])+)
关于以上的两个Regex的相关说明,应该说功能还是比较强大的了:
1。这两个正则表达式能够解析最好是HTML/XHTML格式,如果是其他格式的字符串,有可能会运行不正常;
2。支持识别的标记有:普通的HTML标记,<!--HTML注释-->,<!XML指令>,<![CDATA[ ... ]]>,标记或指令的标识符支持[a-zA-Z0-9_-:];
3。支持name=value和单独一个name的attribute,能够识别出""或''包括的属性值;
4。针对<style></style>和<script></script>标记包含的内容进行特殊处理,也就是所有的CSS和Script代码将原封不动的作为整体捕获。
//非htmt标记中的空格转换成“ ”
正则表达式代码如下:
public static string ReplaceSpace(string content)
{
string findstr="(?<fore>(?:(?:[^< ])*(?:<(?:!--(?:(?:[^-])*(?:(?=-->)|-))*--|(?:[^>])+)>)?)*)[ ](?<back>(?:(?:[^< ])*(?:<(?:!--(?:(?:[^-])*(?:(?=-->)|-))*--|(?:[^>])+)>)?)*)";
string replacestr="${fore} ${back}";
string targetstr=System.Text.RegularExpressions.Regex.Replace(content,findstr,replacestr,System.Text.RegularExpressions.RegexOptions.IgnoreCase);
return targetstr;
}
这个正则表达式是一位朋友提供的,主要功能是将字符串中非htmt标记中的空格转换成“ ”, 目前我还没查出这个正则表达式中的问题,请熟悉正则表达式的朋友指点。
//获取URL
string regex="href=[\\\"\\\'](http:\\/\\/|\\.\\/|\\/)?\\w+(\\.\\w+)*(\\/\\w+(\\.\\w+)?)*(\\/|\\?\\w*=\\w*(&\\w*=\\w*)*)?[\\\"\\\']";
preg_match_all('/<a.*?(?:|\\t|\\r|\\n)?href=[\'"]?(.+?)[\'"]?(?:(?:|\\t|\\r|\\n)+.*?)?>(.+?)<\/a.*?>/sim',$strSource,$strResult,PREG_PATTERN_ORDER);
//PHP正则相关文章
[专题]正则表达式在PHP中的应用
[文章]正则表达式中的特殊字符
[文章]正则表达式使用详解
[文章]在PHP中使用与Perl兼容的正则表达式
[文章]揭开正则表达式语法的神秘面纱
[文章]MySql正则表达式的描述
[Classes]Search
[下载]Mastering Regular Expressions (英文PDF)
[常见问答]如何使用PHP中的正则表达式
[常见问答]正则表达式的基本语法
[常见问答]怎么将单引号“'”前面加上一个反斜杠?
[常见问答]能否在SQL语句中使用正则表达式?
[常见问答]如何用正则表达式来表示中文?
//了解更多基于Perl样式的正则:http://www.pcre.org
分享到:
相关推荐
在这个“常用正则表达式HTML,JAVA合集”中,我们主要关注的是HTML和Java环境下的正则表达式应用。 1. **HTML中的正则表达式**: 在HTML中,正则表达式通常用于表单验证,例如输入字段(如邮箱、电话号码、手机号码...
例如,通过构建复杂的正则表达式来解析HTML文档,从中抽取特定的链接地址或文本内容;利用正则表达式来进行邮件地址的有效性检查等。 #### 七、总结 《精通正则表达式(第三版)简体中文版》是一本全面介绍正则...
2. **文本处理**:从大量文本中提取特定信息,如网页爬虫抓取链接、解析HTML标签等。 3. **替换操作**:批量替换文本,如去除空白字符、格式化代码等。 4. **URL解析**:利用正则处理URL,提取协议、域名、路径、...
在网络爬虫中,它可以用于解析HTML或XML文档,提取链接、文本内容等。 10. **编程语言支持**:大多数编程语言都内置了正则表达式支持,如Java(Test.java中的例子可能涉及Java的`Pattern`和`Matcher`类),Python的...
### 报表工具FineReport正则表达式定义规则 #### 一、正则表达式概述 正则表达式是一种强大的文本处理工具,在多种编程语言中都有应用,它可以帮助我们完成字符串搜索、替换等一系列复杂的文本处理任务。在报表...
正则表达式作为强大的文本匹配工具,常被用于模板解析中,以实现高效且灵活的数据提取和替换。本篇文章将深入探讨如何利用正则表达式进行自定义模板的解析。 首先,我们需要理解什么是模板。模板是一种预定义的格式...
总结来说,虽然正则表达式可以用于简单的HTML表格数据提取,但在实际项目中,考虑到HTML的复杂性和解析的健壮性,建议使用专门的HTML解析库。然而,了解如何用正则表达式处理HTML是很有用的,特别是在快速原型或处理...
这种能力使得正则表达式在数据清洗、日志分析、文本解析和格式验证等场景下极为有用。例如,在网页开发中,正则表达式可用于验证用户输入的数据格式是否正确;在日志分析中,正则表达式可以帮助快速定位特定类型的...
《Jmeter正则表达式提取器的深度解析与应用》 在软件测试和性能测试领域,Apache JMeter 是一款广泛使用的开源工具,尤其在接口测试和Web应用性能测试中扮演着重要角色。其中,正则表达式提取器是Jmeter中的一个...
这展示了一个具体的例子,即如何利用正则表达式解析网页内容,抓取隐藏在HTML代码中的特定信息。 正则表达式的核心在于其模式匹配能力。它由一系列字符、特殊符号和操作符组成,可以匹配各种复杂的数据格式。例如,...
正则表达式无法很好地处理嵌套标签和具有属性的标签,且对HTML的解析通常不如专门的HTML解析器准确。不过,在一些简单应用场景下,使用正则表达式还是可以完成任务的。 下面是一个简单的JavaScript示例代码,展示...
以下是对给定文件中的正则表达式知识点的详细解析: ### 1. 匹配中文字符 正则表达式:`[\u4e00-\u9fa5]` 此表达式用于匹配中文字符,其中`\u4e00`到`\u9fa5`是Unicode编码范围内的中文字符。在处理包含中文的...
java实现用正则表达式的方法提取html中的信息,可以提取标题,正文,链接等。经过运行,没问题的
### 正则表达式II:深入理解与应用 #### 一、正则表达式的概念与基本元素 正则表达式是一种强大的文本匹配工具,用于在字符串中查找特定的字符组合。它广泛应用于搜索、替换以及数据验证等场景。在本章节中,我们...
正则表达式(Regular Expression)是一种...通过理解以上知识点,你将能够运用正则表达式有效地处理HTML文本,无论是简单的查找、替换还是复杂的解析任务。但记得,针对HTML解析,使用专门的解析库通常更为稳定和高效。
例如,如何使用正则表达式来验证表单输入、清洗HTML标记、解析URL参数等。 综上所述,《精通正则表达式(第三版)》不仅涵盖了正则表达式的理论知识,还提供了大量的实践指导,对于希望深入了解并熟练掌握正则...
手册通常会涵盖正则表达式的元字符、预定义字符类、选择、重复、分组、反向引用、否定预查等内容,并且会有大量的实例解析,帮助读者更好地理解和运用正则表达式。 总结,正则表达式是编程和数据处理中的重要工具,...
正则表达式不仅在JavaScript和Java中广泛应用,在HTML中也同样重要。例如,可以通过JavaScript结合HTML表单来验证用户输入的数据是否符合预期格式。下面是一个简单的HTML表单验证示例: ```html ...
2. 数据提取:通过正则表达式可以从大量文本中提取特定信息,例如从HTML源码中抓取链接:`(?:[^>]*?\s+)?href=(["'])(.*?)\1`。 3. 替换操作:在编程语言中,可以使用正则表达式进行文本替换,例如将所有空格替换为...
匹配HTML标记的正则表达式 正则表达式:`<(\S*?)[^>]*>.*?|*? />` **评注**:虽然该表达式可以匹配一部分HTML标签,但其能力有限,尤其是对于复杂嵌套的HTML结构,可能无法完全解析。它适合于简单的HTML文本清理或...