//把所有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
分享到:
相关推荐
正则表达式的合集,包括电话号码,邮箱验证,手机号码验证等等...开发时候拿来用非常方便!
java实现用正则表达式的方法提取html中的信息,可以提取标题,正文,链接等。经过运行,没问题的
RegexApplication/Default.aspx 正则表达式类的应用 RegexApplication/GetPageHtmlData.aspx 获取网页的内容 第10章(/10/) ASPNETValidator/Compare.aspx 比较验证 ASPNETValidator/...
如何在Java程序中利用正则表达式实现对字符串的解析.另外,HTMLParser是一款很强大的对HTML网页进行解析的工具,其中大量地用到正则表达式.
精通正则表达式第三版 搜集于网络 前言..........I 第1章:正则表达式入门.... 1 解决实际问题... 2 作为编程语言的正则表达式... 4 以文件名做类比... 4 以语言做类比... 5 正则表达式的知识框架... 6 对于...
包含js正则表达式基础知识、Jakarta-ORO库和一些HTML应用实例
项目主要用于入门学习,使用最基本的正则表达式来解析并处理文本,而不是常规的AST方法.zip 一个简单的markdown解析器,能够将markdown解析为html。项目主要用于入门学习,使用最基本的正则表达式来解析并处理文本,...
项目主要用于入门学习,使用最基本的正则表达式来解析并处理文本,而不是常规的AST方法 一个简单的markdown解析器,能够将markdown解析为html。项目主要用于入门学习,使用最基本的正则表达式来解析并处理文本,而...
正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界。 -或- 对正则表达式功能字符的还原,如"*"匹配它...
最近要在项目中做HTML解析,本想使用NekoHTML来解析,... 正则表达式此时发挥了她巨大的威力,为我排忧解难,很快便完成了HTML解析工作. 在解析期间,研究了很多java正则表达式使用方法,颇得一些经验,不敢独享,愿与大家共享.
正则表达式是做文本解析工作必不可少的技能。如Web服务器日志分析,网页前端开发等。很多高级文本编辑器都支持正则表达式的一个子集,熟练掌握正则表达式,经常能够使你的一些工作事半功倍。例如统计代码行数,只需...
主要介绍了java正则表达式解析html示例,用到获取url的正则表达式,获取图片的正则表达式,需要的朋友可以参考下
支持用XPath来解析HTML。这个意义不小,为什么呢?因为对于页面上的元素的xpath某些强大的浏览器能够直接获取得到,并不需要手动写。节约了大半写正则表达式的时间,当然正则表达式有时候在进一步获取的时候还需要写...
支持用XPath来解析HTML。这个意义不小,为什么呢?因为对于页面上的元素的xpath某些强大的浏览器能够直接获取得到,并不需要手动写。节约了大半写正则表达式的时间,当然正则表达式有时候在进一步获取的时候还需要写...
学习java的正则表达式,抓取网页并解析HTML部分内容 package com.xiaofeng.picup; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net....
正则表达式在平时做文本处理(爬虫程序去解析html中的字段,在分析log文件的时候需要抓取一些关键数据)的时候经常会用到。一般我们会使用到Python的re库。如果正则表达式自己代码中反复被用到的时候,我们可以将这...
CL-PPCRE - 用于 Common Lisp 的便携式 Perl 兼容正则表达式抽象的CL-PPCRE 是一个可移植的 Common Lisp 正则表达式库,具有以下特点: 它与Perl兼容(尤其是与结合使用时,可以兼容解析正则表达式字符串)。...
常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用...
* Summary of regular-expression constructs 正则表达式结构简介: * Construct Matches * Characters 字符: * x The character x x 字符 x * \\ The ...
了解正则表达式之前,须要掌握一些常用的正则表达式的基础知识,这些如果能记得最好记得,记不住须要用的时候能查到就行,就多个特殊字符,所以说正则表达式玩的就是特殊,具体大家可以查看更加细致的说明。...