2011-03-04 58 views
1

我無法弄清楚如何使用積極的lookahead創建正則表達式。這個想法是將一個長字符串中的每兩個字符加上兩個字符串。即前置字符串使用replaceAll和正則表達式

"090909" => "XX09XX09XX09" 

此代碼:

String s = "090909"; 
String ns = s.replaceAll("(?=\\d\\d)", "XX"); 

...不工作;輸出是XX0XX9XX0XX9XX09。但是,此代碼的工作:

String s = "090909"; 
String ns = s.replaceAll("(?=09)", "XX"); 

我在困惑如何來爲每兩個字符的表情說前瞻。我錯過了一些界限或什麼?

回答

5

您可以使用以下方法:

String s = "090909"; 
String ns = s.replaceAll("(\\d\\d)", "XX$1"); 

()將創建capture$1訪問捕獲。

+0

+1,但是你缺少一個'('在正則表達式中,替換字符串應該是'「XX $ 1」',而不是'「$ 1XX」'。 – 2011-03-04 01:15:01

+0

你的代碼沒有工作。得到了新的解決方案s.replaceAll(「(?=(\\ d \\ d)+ $)」,「XX」),但不幸的是,這僅適用於字符串長度爲偶數 – Zorlac 2011-03-04 01:20:07

+0

的情況。替換所有(「(\\ d \\ d)」,「XX $ 1」)。謝謝!不知道$ 1可以用於替換字符串,但非常感謝 – Zorlac 2011-03-04 01:23:31

相關問題