2015-11-27 45 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\\]")