用java中的regex替换所有

时间:2014-02-19 17:13:56

标签: java regex lookahead

我想使用replaceAll()进行以下替换:

#one# -> <element name="one">
#two# -> <element name="two">

依此类推...

我需要什么正则表达式?

这是一个天真的尝试:

replaceAll("#[\w]#", "<element name=\"[?1]\"");
// my hope is that I can remember a value somehow (`[\w]`) and use it for the substitution ([?1])
// which is, written like this, a nonsense

1 个答案:

答案 0 :(得分:2)

您需要使用:

str = str.replaceAll("#(\\w+)#", "<element name=\"$1\">");
  • 您需要\\w+[^#]+才能匹配超过1个字符
  • 您需要将它们放在括号中以使其成为捕获组
  • 您可以使用$1 n替换字符串
  • 对此匹配组使用反向引用