2011-03-04 59 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

相关问题