2010-01-18 176 views
0

可能重复:RegEx matching HTML tags and extracting text得到html标签之间的文本

我需要得到像<p></p>或任何HTML标记之间的文本。我的模式是这样的

Pattern pText = Pattern.compile(">([^>|^<]*?)<"); 

任何人都知道一些更好的模式,因为这其中不是很有用。我需要它从网页获取索引内容。

谢谢

+2

在你的情况中,正则表达式可能没问题,但你有没有读过这个? http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – 2010-01-18 18:49:32

+3

应该有一个选项*投票关闭:用户正在解析HTML与正则表达式* – 2010-01-18 18:54:55

回答

5

SO即将降临在你身上。但让我成为第一个说,不要使用正则表达式来解析HTML。 Here是一个Java的HTML解析器的列表。看看,直到你看到一个适合你的想法的API并使用它。

+0

TagSoup特别美味,如果你有sl HTML的HTML担心。 – bmargulies 2010-01-18 18:52:34

2

解析HTML时不要使用正则表达式。

改为使用XPath(如果您的HTML格式正确)。您可以很容易地使用text()函数来引用文本节点。

3

看起来您正尝试在否定集内使用|运算符,该运算符既不工作也不需要。只需指定你不想匹配的字符:

Pattern pText = Pattern.compile(">([^<>]*?)<");