正则表达式搜索文件

时间:2015-04-18 09:50:22

标签: java regex file

我有这个任务:我必须阅读一个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]\>*"

1 个答案:

答案 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

DEMO

\G锚点的引用: