C#中正则表达式匹配Html标签详解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学习记录1

以下是一段Html代码

其他内容...

伊拉克战争!

其他内容...

正则表达式:<table.*(?=headline)

解释:这个正则表达式匹配表格的开始标记,能够返回开始标记直至“headline”之间的所有内容(换行除外)。就是我以上以红色标示出来的部分。

原理:

.* #除换行外的所有字符

(?=headline) #零宽度正预测先行断言,匹配以headline结尾的单词的前面部分(除了headline以外的部分)。

学习记录2

其他内容...

伊拉克战争!

其他内容...

正则表达式:<table.*(?=headline)(.|\n)*?</table>

解释:它将会匹配最长的以<table border="0" width="11%" class="开始,以</table>

结束的字符串,就是我以上以红色标示出来的部分。

原理:<table.*(?=headline) #参见记录1的解释

(.|\n) #指示在两个或多个项之间进行选择,(z|f)ood 与“zood”或“food”匹配。

*? #应当与上一个(.|\n) 联合起来看,.*?

就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复,懒惰模式。

</table>#匹配的结束标记

注意:“(.|\n)”后面的“*”匹配0个到多个任意字符;而“?”使得“*”匹配范围最小化,即在找到表达式的下一部分之前匹配尽可能少的字符。</table>是表格的结束标记。

学习记录3

其他内容...

伊拉克战争!

其他内容...

正则表达式:<(?[^\s>]+)[^>]*>(.|\n)*?>

解释:匹配成对的HTML标签,它将会匹配Html标签及标签中的内容,本例中分三段匹配三个

标签及
中的内容。

原理:< #html标签中的<

(?[^\s>]+) #(?),分组命名的方式,[^\s>]:非任何空白字符及“>”至少匹配一次

[^>]*>#非“>”匹配0到n次,及html的标签“>”

(.|\n) #指示在两个或多个项之间进行选择,(z|f)ood 与“zood”或“food”匹配。

*? #应当与上一个(.|\n) 联合起来看,.*?

就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复,懒惰模式。

> #反向引用命名的组,语法为\k及html标签“>”

注意:“(.|\n)”后面的“*”匹配0个到多个任意字符;而“?”使得“*”匹配范围最小化,即在找到表达式的下一部分之前匹配尽可能少的字符。此例使用了分组命名及反向引用命名的组概念。

相关文档
最新文档