我有这个任务:我必须阅读一个HTML文件,并将所有<a>
标记与其所有属性匹配并打印出来。例如:对于标签:
<a href="https://www.facebook.com" alt="Facebook icon" title="Facebook" target="_blank"></a>
要打印:
href - https://www.facebook.com
alt - Facebook icon
title - Facebook
target- _blank
text – not found
我具有正则表达式的基本知识,并且从java中的文件中读取零知识。有人可以给我一些关于如何有效地做到这一点的提示,建议和解释吗?
在我看来,用于匹配<a>
标记与所有属性以及结束</a>
的正则表达式可能是:
"\<[aA]\w\>\w\<\/[aA]\>*"
答案 0 :(得分:2)
像其他人说的那样,不要用正则表达式解析html文件。如果您打算,那么您可以尝试以下基于\G
锚点的正则表达式。
String s = "<a href=\"https://www.facebook.com\" alt=\"Facebook icon\" title=\"Facebook\" target=\"_blank\"></a>";
Matcher m = Pattern.compile("(?:<a|(?<!^)\\G)\\s+(\\w+)=\"([^\"]*)\"")
.matcher(s);
while (m.find()) {
System.out.println(m.group(1) + "\t-\t" + m.group(2));
}
<强>输出:强>
href - https://www.facebook.com
alt - Facebook icon
title - Facebook
target - _blank
\G
锚点的引用: