2015-11-27 44 views
3

是否可以編寫Java Regex序列來匹配字符串中的兩個相同序列。換句話說給出的串僅當兩個序列相同時才匹配的正則表達式

near[2015-12-1] far[2015-12-1] 

我想要匹配的所有字符串,其中第一方括號內的值是等於一個在所述第二方括號和方括號外的字符串是near[] far[]

near[2015-12-1] far[2015-12-1] MATCH 
near[2015-12-3] far[2015-12-1] NO MATCH 
near[2015-12-1] far[2014-12-1] NO MATCH 
near[2015-12-3] far[2015-12-3] MATCH 
foo[2015-12-1] bar[2015-12-1] NO MATCH 

這可能嗎?

回答

6

使用捕獲組,您應該通過反向引用來引用這些捕獲的字符。

"^near\\[(.*?)\\]\\sfar\\[\\1\\]$" 

DEMO

+1

完美的感謝,我知道這是類似的東西,但不能得到它的權利,這工作第一次。 –

+0

錨('^ $')是不必要的,假設你使用'matches()'。 – Andreas

3

正則表達式會看起來像near\[(.*)\] far\[\1\]。在Java中,你不得不像下面這樣:

Pattern.matches("near\\[(.*)\\] far\\[\\1\\]", "near[2015-12-1] far[2015-12-1]") 

"near[2015-12-1] far[2015-12-1]".matches("near\\[(.*)\\] far\\[\\1\\]")