正则表达式匹配Html标签
2015-06-02 09:18
211 查看
以下是一段Html代码
<table boder="0" width="11%" class="somestory">
<tr>
<td width="100%">
<p align="center">其它内容...</p>
</td>
</tr>
</table>
<table border="0" width="11%" class="headline">
<tr>
<td width="100%">
<p align="center">典经HTML正则表达式!</p>
</td>
</tr>
</table>
<table boder="0" width="11%" class="someotherstory">
<tr>
<td width="100%">
<p align="center">其它内容...</p>
</td>
</tr>
</table>正则表过式:<table.*(?=headline)
说明:正则表达式匹配表格开始标记,能够返回开始标记直至 “headline”之间的所有内容(换行除外);
就是以上红色标示出来的部分。
原理:
<table //匹配的开始部分
.* //除换行外的所有字符
(?=headline) //零宽度正预测先行断言,匹配以 headline 结尾的单词的前面部分(除了 headline 以外的部分)
例2.
<table boder="0" width="11%" class="somestory">
<tr>
<td width="100%">
<p align="center">其它内容...</p>
</td>
</tr>
</table>
<table border="0" width="11%" class="headline">
<tr>
<td width="100%">
<p align="center">典经HTML正则表达式!</p>
</td>
</tr>
</table>
<table boder="0" width="11%" class="someotherstory">
<tr>
<td width="100%">
<p align="center">其它内容...</p>
</td>
</tr>
</table>正则表达式:<table.*(?=headline)(.|\n)*?</table>
说明:匹配最长的以 <table border="0" width="11%" class=" 开始, 以</table>结束的字符串,就是以上以红色标示出来的部分。原理:
<table.*(?=headline) //参见记录1的说明
(.|\n) //指示在两个或多个项之间进行选择,(zlf)ood 与 "zood" 或 "food" 匹配
*? //应与上一个 (.|\n) 联合起来看, .*? 就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复,懒惰模式。
</table> //匹配的结束标记注意:“(.|\n)”后面的 "*" 匹配 0 个到多个任意字符,而“?”使得“*”匹配范围最小化,即在找到表达式的下一部分之前匹配尽可能少的字符。</table> 是表格的结束标记. 例3.
<tableboder="0" width="11%" class="somestory">
<tr>
<td width="100%">
<p align="center">其它内容...</p>
</td>
</tr>
</table>
<tableborder="0" width="11%" class="headline">
<tr>
<td width="100%">
<p align="center">典经HTML正则表达式!</p>
</td>
</tr>
</table>
<tableboder="0" width="11%" class="someotherstory">
<tr>
<td width="100%">
<p align="center">其它内容...</p>
</td>
</tr>
</table>正则表达式:<(?<tag>[^\s>]+)[^>]*>(.|\n)*?</\k<tag>>
说明:匹配成对的HTML标签,它将会匹配Html标签及标签中的内容,本例分三段匹配三个<table>标签及</table>中的内容。
原理:
< //html标签中的 <
(?<tag>[^\s>]+) // (?<name>), 分组命名的方式,[^\s>]:非任何空白字符及“>”至少匹配一次
[^>]*> //非“>”匹配 0 到 n 次,及html的标签“>”.
(.|\n) //在两个或多个项之间时行选择,(zlf)ood 与 "zood" 或 "food" 匹配.
*? // 应与上一个(.|\n)联合起来看, .*? 就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复,懒惰模式。
</\k<tag>> //反向引用命名的组,语法为 \k<name>, 及html 标签“>”注意:“(.|\n)”后面的 "*" 匹配 0 个到多个任意字符,而“?”使得“*”匹配范围最小化,即在找到表达式的下一部分之前匹配尽可能少的字符。
本例使用了分组命名及反向引用命名组的概念。
正则表达匹配中文匹配中文字符的正则表达式: [\一-\龥]
1、先用js把中文转换16进制码:d.innerHTML = escape("你们"); 得到 %你%们, 即 \你\们2、var arr = str.match(/\你\们/g); 3、\你为单个汉字“你”.4、以上测试程序为javascript?
<table boder="0" width="11%" class="somestory">
<tr>
<td width="100%">
<p align="center">其它内容...</p>
</td>
</tr>
</table>
<table border="0" width="11%" class="headline">
<tr>
<td width="100%">
<p align="center">典经HTML正则表达式!</p>
</td>
</tr>
</table>
<table boder="0" width="11%" class="someotherstory">
<tr>
<td width="100%">
<p align="center">其它内容...</p>
</td>
</tr>
</table>正则表过式:<table.*(?=headline)
说明:正则表达式匹配表格开始标记,能够返回开始标记直至 “headline”之间的所有内容(换行除外);
就是以上红色标示出来的部分。
原理:
<table //匹配的开始部分
.* //除换行外的所有字符
(?=headline) //零宽度正预测先行断言,匹配以 headline 结尾的单词的前面部分(除了 headline 以外的部分)
例2.
<table boder="0" width="11%" class="somestory">
<tr>
<td width="100%">
<p align="center">其它内容...</p>
</td>
</tr>
</table>
<table border="0" width="11%" class="headline">
<tr>
<td width="100%">
<p align="center">典经HTML正则表达式!</p>
</td>
</tr>
</table>
<table boder="0" width="11%" class="someotherstory">
<tr>
<td width="100%">
<p align="center">其它内容...</p>
</td>
</tr>
</table>正则表达式:<table.*(?=headline)(.|\n)*?</table>
说明:匹配最长的以 <table border="0" width="11%" class=" 开始, 以</table>结束的字符串,就是以上以红色标示出来的部分。原理:
<table.*(?=headline) //参见记录1的说明
(.|\n) //指示在两个或多个项之间进行选择,(zlf)ood 与 "zood" 或 "food" 匹配
*? //应与上一个 (.|\n) 联合起来看, .*? 就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复,懒惰模式。
</table> //匹配的结束标记注意:“(.|\n)”后面的 "*" 匹配 0 个到多个任意字符,而“?”使得“*”匹配范围最小化,即在找到表达式的下一部分之前匹配尽可能少的字符。</table> 是表格的结束标记. 例3.
<tableboder="0" width="11%" class="somestory">
<tr>
<td width="100%">
<p align="center">其它内容...</p>
</td>
</tr>
</table>
<tableborder="0" width="11%" class="headline">
<tr>
<td width="100%">
<p align="center">典经HTML正则表达式!</p>
</td>
</tr>
</table>
<tableboder="0" width="11%" class="someotherstory">
<tr>
<td width="100%">
<p align="center">其它内容...</p>
</td>
</tr>
</table>正则表达式:<(?<tag>[^\s>]+)[^>]*>(.|\n)*?</\k<tag>>
说明:匹配成对的HTML标签,它将会匹配Html标签及标签中的内容,本例分三段匹配三个<table>标签及</table>中的内容。
原理:
< //html标签中的 <
(?<tag>[^\s>]+) // (?<name>), 分组命名的方式,[^\s>]:非任何空白字符及“>”至少匹配一次
[^>]*> //非“>”匹配 0 到 n 次,及html的标签“>”.
(.|\n) //在两个或多个项之间时行选择,(zlf)ood 与 "zood" 或 "food" 匹配.
*? // 应与上一个(.|\n)联合起来看, .*? 就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复,懒惰模式。
</\k<tag>> //反向引用命名的组,语法为 \k<name>, 及html 标签“>”注意:“(.|\n)”后面的 "*" 匹配 0 个到多个任意字符,而“?”使得“*”匹配范围最小化,即在找到表达式的下一部分之前匹配尽可能少的字符。
本例使用了分组命名及反向引用命名组的概念。
正则表达匹配中文匹配中文字符的正则表达式: [\一-\龥]
1、先用js把中文转换16进制码:d.innerHTML = escape("你们"); 得到 %你%们, 即 \你\们2、var arr = str.match(/\你\们/g); 3、\你为单个汉字“你”.4、以上测试程序为javascript?
相关文章推荐
- 初识HtmlParser.Net
- 【推荐】.NET批量上传控件——HtmlInputFiles (转)
- HTML DOM Document 对象
- HTML辅助方法的练习一
- Html-input文本框只能输入数字
- 第001讲 html介绍 html运行原理
- html 复选框checkbox
- as3 htmlText 的bug
- HTML语义化标签(一)
- 总结-html
- html图片无法显示
- 网页html中嵌入特殊字体
- Html表格自动换行
- 如何显示html代码到新窗口界面中
- HTML textarea输入框限制长度
- 18_块元素和内联元素.html
- 16_列表、边框.html
- html 积少成多
- 5_iframe.html
- 4_write.html