2014-06-12 22 views
-2

我有如下格式的字符串:我如何提取以下模式在java中

String s = " some text.... 
    [[Category:Anarchism| ]] 
[[Category:Political culture]] 
[[Category:Political ideologies]] 
[[Category:Far-left politics]] 
... some more text" 

我想提取所有從這個文本的類別。 [Anarchism,Political culture ....,Far-left politics]

此外,有沒有一個很好的教程,我可以瞭解這個正則表達式模式匹配的東西.. 感謝

+1

http://www.regular-expressions.info/是最好的,我迄今所看到的,如果你想了解純的正則表達式,http://docs.oracle.com/javase/tutorial/essential/regex /會告訴你如何在Java中使用正則表達式。爲了解決這個問題,你需要知道如何使用Pattern和Matcher類,在正則表達式中哪些字符是特殊的,以及如何轉義它(在這種情況下''和'''')。 – Pshemo

回答

1

假設你不想選擇單詞「類別「本身,正則表達式應該是:

(?<=Category:).*?(?=]) 

我會打破這個爲你降下一點。

括號中的第一位查找Category,但未真正選擇它。

下一頁.+?查找1 - 無窮字符(換行符除外),但只要下一個部分匹配時停止:

最後括號告訴它尋找一個],但實際上不選擇它。

結果將是以下藍色突出顯示的位。

enter image description here

2

您可以使用以下正則表達式來獲取類:

\[\[Category:(.+)\]\] 

然後你就可以訪問您的組以獲取類別值。

記住反斜槓添加到反斜槓,如果你對Java的字符串使用:

\\[\\[Category:(.+)\\]\\] 

你可以看到它的工作:

enter image description here

相關問題