http://bbs.csdn.net/wap/topics/390938327
查找所有的TD区域(最短): <td\s*.*>\s*.*<\/td>
查找所有的TR: <tr.*(?=>)(.|\n)*?</tr>
查找所有的TD: <td.*(?=>)(.|\n)*?</td>
正则表达式匹配Html标签
例1. 以下是一段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 个到多个任意字符,而“?”使得“*”匹配范围最小化,即在找到表达式的下一部分之前匹配尽可能少的字符。 本例使用了分组命名及反向引用命名组的概念。
正则表达匹配中文 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 1、先用js把中文转换16进制码:d.innerHTML = escape("你们"); 得到 %u4F60%u4EEC, 即 \u4F60\u4EEC
2、var arr = str.match(/\u4F60\u4EEC/g);
3、\u4F60为单个汉字“你”.
4、以上测试程序为javascript
查找所有的TD区域(最短): <td\s*.*>\s*.*<\/td>
查找所有的TR: <tr.*(?=>)(.|\n)*?</tr>
查找所有的TD: <td.*(?=>)(.|\n)*?</td>
正则表达式匹配Html标签
例1. 以下是一段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 个到多个任意字符,而“?”使得“*”匹配范围最小化,即在找到表达式的下一部分之前匹配尽可能少的字符。 本例使用了分组命名及反向引用命名组的概念。
正则表达匹配中文 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 1、先用js把中文转换16进制码:d.innerHTML = escape("你们"); 得到 %u4F60%u4EEC, 即 \u4F60\u4EEC
2、var arr = str.match(/\u4F60\u4EEC/g);
3、\u4F60为单个汉字“你”.
4、以上测试程序为javascript
|
请发表评论