正则表达式 排除html标签的匹配问题

时间:2023-01-21 05:38:50
1. 在一段html代码中匹配一个字符串
2. 只对标签包含的文字内容进行匹配,比如<a>之间是要做匹配的区域</a>
3. 例如<a href="xxx">abc hrefaa</a>我想匹配href,我只要它在abchrefaa中匹配,<a href=”xxx”>之间的内容不做匹配

希望告诉指点,谢谢了

9 个解决方案

#1


up

#2


1、先取得">与</a>中间的内容。
2、再匹配需要的内容。

#3


有点麻烦,有两种办法,你可以匹配了以后判断前边有没有 <a 的,也可以先把 <a href替换为字符串中不可能出现的字符,然后在匹配,匹配了以后再改过来

#4


咨询了很多人,都没有结果,看来这个问题确实是很难啊

#5


jeff1987 第二个想法我也考虑过,不过比较麻烦,不是我想要实现的最简方法~

#6


等待…………

#7


最典型的问题就是如何匹配这个例句“其他文本其他文本其他文本<div>外层<div>中层<div>内层 </div></div></div>其他文本”

#8



/<a[^>]*href=[\'\"\s]*([^\s\'\"]*)[^>]*>(.+?)<\/a>/ig

拿这个参考下,这个是同时取出 href后面的地址和<a></a>之间的内容..

#9


$re = "/>.*(href).*</"; 
$t = "<a href=\"xxx\">abchrefaa </a>"; 
preg_match_all($re, $t, $regs); 
print_r($regs); 

#1


up

#2


1、先取得">与</a>中间的内容。
2、再匹配需要的内容。

#3


有点麻烦,有两种办法,你可以匹配了以后判断前边有没有 <a 的,也可以先把 <a href替换为字符串中不可能出现的字符,然后在匹配,匹配了以后再改过来

#4


咨询了很多人,都没有结果,看来这个问题确实是很难啊

#5


jeff1987 第二个想法我也考虑过,不过比较麻烦,不是我想要实现的最简方法~

#6


等待…………

#7


最典型的问题就是如何匹配这个例句“其他文本其他文本其他文本<div>外层<div>中层<div>内层 </div></div></div>其他文本”

#8



/<a[^>]*href=[\'\"\s]*([^\s\'\"]*)[^>]*>(.+?)<\/a>/ig

拿这个参考下,这个是同时取出 href后面的地址和<a></a>之间的内容..

#9


$re = "/>.*(href).*</"; 
$t = "<a href=\"xxx\">abchrefaa </a>"; 
preg_match_all($re, $t, $regs); 
print_r($regs);