2011-10-23 34 views
1

Matcher.replaceAll()backreference的偉大工程(即Matcher.replaceAll("$2"))。多個反向引用()

但是我一直無法使它有兩個或更多的反向引用,例如, Matcher.replaceAll("$1$2")

Matcher.replaceAll()是否支持多個反向引用?如果是這樣,那麼使用它的正確語法是什麼?

+2

Matcher.replaceAll( 「$ 1 $ 2」)應該工作。你做錯了什麼 –

+1

http://download.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html#replaceAll(java.lang.String)這裏沒什麼奇怪的。可能你的第二個反向引用是空的? – FailedDev

回答

3

它工作得很好。下面的代碼片段:

Pattern p = Pattern.compile("(.)(.)"); 
Matcher m = p.matcher("ab"); 
System.out.println(m.replaceAll("$2$1")); 

會打印:

ba 
+0

你們都是對的。我使用的語法是正確的,但是我沒有將Matcher.replaceAll(「$ 1 $ 2」)的返回值賦給輸出字符串。一切都很好。謝謝! – uTubeFan