使用哪个正则表达式从HTML文本中提取某些单词?

时间:2010-12-07 13:35:42

标签: regex

我很难构建正则表达式来从HTML文本中抓取一些单词。

假设我有以下内容:

<p style="padding-left :12px">SOME_TEXT_I_WANT</p><p>SOME_OTHER_TEXT</p>

* SOME_TEXT_I_WANT *和* SOME_OTHER_TEXT *可以是一堆单词,如“SERY RANDOM TEXT”或HTML文本,如“<strong>SOME BOLD TEXT</strong>

我的目标是用一个正则表达式提取这些文本。

3 个答案:

答案 0 :(得分:4)

您打算使用哪种语言?该语言是否存在HTML解析器?如果是,请考虑使用解析器

但是,如果这是“一次性”,您可以能够通过以下方式实现:

#<p[^>]*>(.*?)</p>#

以上内容有一些限制,最明显的是它与<p data-something="a > b">...</p>或嵌套<p>不匹配。 (我无法判断您尝试解析的标记是否实际允许嵌套<p> s - 只是告知您可能存在的陷阱。)

答案 1 :(得分:0)

假设您使用的是PHP:

$html = "<p>some text here</p>"
preg_replace("/<.+?>/","", $html);

答案 2 :(得分:0)

不要使用正则表达式。如果你问为什么,有一个非常流行的SO post描述了如果你试图使用正则表达式来解析HTML会发生什么。

使用您的语言的HTML或XML解析器,并使用现有功能提取您需要的内容。