需要帮助将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)。
答案 0 :(得分:3)
我喜欢anubhava的回答,但是如果你想要更加严格并断言有非空白术语和开始和结束括号,请捕捉术语并使用后引用将其写回:
str = str.replaceAll("(\\(\\w+)=(\\w+\\))", "$1#$2");
答案 1 :(得分:1)
您可以使用:
String repl = str.replaceAll("=(?=[^()]*\\))", "#");
(?=[^()]*\))
是一个预测,只有当=
跟随)
时,才能确保匹配{{1}}。