2015-06-11 48 views
-1

我刚接触正则表达式。 我想提取所有的HTML标记之间的字符串

包含一个子 例如,对于HTML如下:html之间的正则表达式字符串<br>

<span class='mouseOverHeader'>Test TEst</span> 
<div class='mouseOverData'> 
xxx cccc ccccc<br>qqq wwww wwww<br>qqq qqq MYSUBSTRING<br><br> 
<a id="email" style="cursor:pointer" onclick=">mmmmmm</a> 
</div> 

我想提取字符串“QQQ QQQ MYSUBSTRING” 因为它包含子我寻找“MYSUBSTRING”

非常感谢帮助

+0

不要针对html或xml测试您的正则表达式。 –

+0

@AvinashRaj你能解释为什么吗? – curvenut

+0

尝试'[^ <>] * MYSUBSTRING [^ <>] *' –

回答

0

通常的方式来解析HTML是在构建树(类似的东西BeautifulSoup Python,HTML::Tree in Perl)

原因是由于HTML标签的嵌套特性以及嵌入其他语言,正则表达式经常会失败和/或产生错误的输出。我相信,这些模块都在做它的方式是通过压入和弹出标签构建树(读括号<>)入栈和弹出出来时,他们被关闭(读</>

不过,若你要坚持正则表达式,可以尝试用这样的:

while($code =~ m/<br>(.+?)<br>/g) 
{ 
print "$1\n"; 
} 

此正则表达式将只匹配第一组,但while循环,可以使匹配,直到遇到不具有图案的子字符串。 我强烈建议您练习一些在线可视化正则表达式匹配器,在您键入时突出显示组(尝试RegExr)。

相关问题