html之间的正则表达式字符串

时间:2015-06-11 17:47:28

标签: regex expression

我是正则表达的新手。 我喜欢在html标签之间提取所有字符串

包含子字符串 例如,对于以下HTML:

 <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>

我想提取字符串&#34; qqq qqq MYSUBSTRING&#34; 因为它包含我正在寻找的子串&#34; MYSUBSTRING&#34;

非常感谢您的帮助

1 个答案:

答案 0 :(得分:0)

解析HTML的常用方法是构建一个树(类似于Python中的BeautifulSoup,Perl中的HTML::Tree

原因在于,由于HTML标签的嵌套特性以及嵌入其他语言,Regex经常会失败和/或产生错误的输出。我相信这些模块的工作方式是通过推送和弹出标签(读取括号<>)到堆栈上并在它们关闭时将它们弹出(阅读</>

如果您希望坚持使用正则表达式,请尝试从以下开始:

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

此正则表达式仅匹配第一个组,但while循环将使其匹配,直到它遇到没有该模式的子字符串。 我强烈建议您练习一些在线视觉正则表达式匹配器,在您键入时突出显示组(尝试 RegExr )。