Java Regex用于替换括号内的特定字符

时间:2015-02-05 22:38:01

标签: java regex

需要帮助将java正则表达式替换为=在括号之间用#输入,我的输入文本是

8=FIX.4.&49=(550=0449)&35=RIO&76=(AB=4560)&

预期输出字符串

8=FIX.4.&49=(550#0449)&35=RIO&76=(AB#4560)&

所以想在#550(0259)和(AB = 4560)内用#替换= char,所以输出应该包含(550#0449)和(AB#4560)。

2 个答案:

答案 0 :(得分:3)

我喜欢anubhava的回答,但是如果你想要更加严格并断言有非空白术语和开始和结束括号,请捕捉术语并使用后引用将其写回:

str = str.replaceAll("(\\(\\w+)=(\\w+\\))", "$1#$2");

答案 1 :(得分:1)

您可以使用:

String repl = str.replaceAll("=(?=[^()]*\\))", "#");

(?=[^()]*\))是一个预测,只有当=跟随)时,才能确保匹配{{1}}。