我有这个html字符串,想要使用单一匹配RegEx提取<div.../div>
和<p.../p>
字符串,我尝试<p\b[^>]*>(.*?)</p>|<div class="sat">(.*)</div>
但没有成功(我正在使用JAVA构建Android应用):
<div class="soo">
<hr/>
<a id="soo:1">
</a>
<span class="sat"> 1
</span> first text
<hr/>
</div>
<p class="bsm">
<a id="ayeh:1:1" class="qay"> (1) </a> HI!
</p>
答案 0 :(得分:1)
我发现JSOUP更适合处理HTML文件。 JSOUP Android Library
答案 1 :(得分:0)
如果你可以保证永远不会有嵌套标签,并且所有标签都已正确关闭,那么你就有了正则表达式的战斗机会,但只有这样。
三个小修改:
.*
s上)(?s)
(“DOTALL”)模式修饰符\b
将尝试匹配退格字符而不是字边界这个正则表达式:
(?s)<p\b[^>]*>(.*?)</p>|<div class="sat">(.*?)</div>
在Java中使用:
Pattern regex = Pattern.compile("<p\\b[^>]*>(.*?)</p>|<div class=\"sat\">(.*?)</div>", Pattern.DOTALL);