Поскольку тело протокола FIX представляет собой набор пар name=value
, разделенных SOH (0x01) символов, и вы хотите заменить значение, вы можете использовать положительный внешний вид нулевой ширины шаблон.
Пример: заменить значение тега 49
body = body.replaceAll("(?<=\u000149=)[^\u0001]*",
Matcher.quoteReplacement("new value"));
Пояснение
(?<= The matched value must be preceded by:
\u0001 SOH field delimiter
49 Tag number
= Separating equal sign
)
[^\u0001]* Matches value, e.g. everything up to the following SOH field delimiter
Если вам нужно добавить текст до / после / вокруг существующего теста, просто вставьте соответствующий текст, используя ссылку $0
, что также означает, что вы не должны использовать quoteReplacement()
для экранирования литерального текста, но вывам придется самостоятельно избегать любых специальных символов.
body = body.replaceAll("(?<=\u000149=)[^\u0001]*",
"new text before $0 new text after"));