正则表达式匹配Html标签


查找所有的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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



猜您在找 使用正则表达式 匹配 HTML 标签内的内容 正则表达式匹配html标签 javascript正则表达式:匹配所有html标签 javascript正则表达式:匹配所有html标签 正则表达式匹配a标签或div标签 (转)PHP正则表达式匹配嵌套HTML标签的方法和技巧 使用正则表达式匹配HTML 下各种标签 </a> <a class='list-group-item' href="/blog/c17dee1.html" title="javascript正则表达式:匹配所有html标签【转】"> <i class="icon-file"></i> javascript正则表达式:匹配所有html标签【转】 </a> <a class='list-group-item' href="/blog/2b7a1e1.html" title="用正则表达式匹配HTML\XML等文件中的标签"> <i class="icon-file"></i> 用正则表达式匹配HTML\XML等文件中的标签 </a> <a class='list-group-item' href="/blog/a017eb1.html" title="正则表达式匹配html标签里面的内容"> <i class="icon-fire"></i> 正则表达式匹配html标签里面的内容 </a> <div id="right_float_ad" class="ad"> </div> </div> </div> </div> </div> <div class="clear"> </div> <div class="fbar" style="z-index:100"> <div class="span7" style="color:grey;font-size:12px;"> </div> <div class="pull-right"> <span><a href="http://beian.miit.gov.cn" rel="nofollow" target="_blank">粤ICP备18138465号</a>  </span><span>© 2018-2025 CODEPRJ.COM </span> </div> </div> <script src="/js/code.js?version=20250505"></script> <script> function buffer(a, b, c) { var d; return function() { if (d) return; d = setTimeout(function() { a.call(this), d = undefined }, b) } } (function() { function e() { var d = document.body.scrollTop || document.documentElement.scrollTop; d > b ? (a.className = "div1 div2", c && (a.style.top = d - b + "px")) : a.className = "div1" } var a = document.getElementById("float"); if (a == undefined) return ! 1; var b = 0, c, d = a; while (d) b += d.offsetTop, d = d.offsetParent; c = window.ActiveXObject && !window.XMLHttpRequest; if (!c || !0) window.onscroll = buffer(e, 50, this) })(); </script> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?85c5e8e7b6167edfc87cb0607142e870"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> </body> </html>