2015-04-18 48 views
-1

我有這個任務:我必須閱讀一個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

這是一門功課? – Toto

+0

你爲什麼不嘗試解析器? –

+1

你可能想看看這個問題及其最佳答案:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – benzonico

回答

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錨:

相關問題