仅当两个序列相同时,正则表达式才匹配

时间:2015-11-27 17:29:13

标签: java regex

是否可以编写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

这可能吗?

2 个答案:

答案 0 :(得分:6)

使用捕获组,您应该通过反向引用来引用这些捕获的字符。

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

DEMO

答案 1 :(得分: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\\]")