Java Regex для замены конкретного символа в скобках

1

Нужна помощь в замене java regex = sing между скобками С#, мой входной текст -

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

ожидаемая строка вывода

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

Поэтому хотелось бы заменить = char только внутри (550 = 0449) и (AB = 4560) С#, поэтому выход должен содержать (550 # 0449) и (AB # 4560).

  • 0
    возможно ли иметь сироту или вложенность "(" и ")" или у них всегда будет открытый и закрытый перентез?
  • 0
    Он может быть вложенным, но он будет сбалансированным, каждое открытие (будет закрываться), поэтому каждый = символ внутри (необходимо заменить даже из вложенного.
Теги:

2 ответа

2
Лучший ответ

Мне нравится ответ anubhava, но если вы хотите быть более строгим и утверждаете, что есть непустые термины и открывающие и закрывающие скобки, запишите термины и запишите их обратно с помощью обратных ссылок:

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

Вы можете использовать:

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

(?=[^()]*\)) - это lookahead, который будет соответствовать match = только тогда, когда есть a ) следуя за ним.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню