我有一个关于使用 Java 和 Regex 查找 html 标签的问题。
我正在使用下面的代码来查找 HTML 中的所有标签,documentURL 显然是 HTML 内容。
find 方法返回 true,这意味着它可以在 HTML 中找到一些东西,但是 matches() 方法总是返回 false,对此我感到非常困惑。
我也引用了 Java 文档,但找不到我的答案。
Matcher 的正确使用方法是什么?
Pattern keyLineContents = Pattern.compile("(<.*?>)");
Matcher keyLineMatcher = keyLineContents.matcher(documentURL);
boolean result = keyLineMatcher.find();
boolean matchFound = keyLineMatcher.matches();
做这样的事情会抛出异常:
String abc = keyLineMatcher.group(0);
谢谢。
最佳答案
循环匹配的正确方法是:
Pattern p = Pattern.compile("<.*?>");
Matcher m = p.matcher(htmlString);
while (m.find()) {
System.out.println(m.group());
}
也就是说,正则表达式是一种极差的 HTML 解析方法。原因归结为:正则表达式可以很好地解析 regular languages。 . HTML 是 context free language .正则表达式适用于嵌套标签、在属性值中使用 >
等。
改用专用的 HTML 解析器,例如 HTML Parser .
关于java - 关于使用 Regex 和 Java 解析 HTML 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2394457/