从HTML标记中提取文本

时间:2012-02-03 23:55:13

标签: regex

我想从HTML标记之间提取静态文本:

<p>
text here
<span> text here <b>too</b></span>
</p>

到目前为止我有这个正则表达式:

(&lt;|<)[\s\/\?]*(\w+)(?<attributes>.*?)[\s\/\?]*(&gt;|>)(\n|.)*?<\/\2>

我不想使用HTML解析器。任何帮助。谢谢!

2 个答案:

答案 0 :(得分:0)

使用RegEx解析HTML是坏主意(tm)。

查看hereherehere,了解有关此主题的更多/更好的智慧词汇。

答案 1 :(得分:0)

使用正则表达式解析HTML通常是一个坏主意,但这并不是您在这里尝试做的。你真正想要的就是删除HTML标签。在您的示例中,您尝试匹配标记并解析属性。但你不需要这样做。

如果以下假设成立:

  • 您不需要摆脱HTML实体
  • 您的代码未定义任何空格(即您不关心<p>分隔段落)
  • 您没有任何评论或文档类型

然后您需要做的就是去除模式</?[^>]+>

Escaped,在vim中,这是:

s/<\/\?[^>]\+>//g