我正在寻找一个正则表达式,我可以在其中查找 FIX 中的某些标签,然后向其中添加信息。 我想将标签作为字符串引用,并使用 ReplaceAll 方法在正则表达式中搜索它。但是,当我不想替换正则表达式中的字符串而是替换其后面的字符串时,我不知道该怎么做。(意思是标签中的内容)。
最佳答案
自 FIX protocol body 是一组由 SOH 分隔的 name=value
对(0x01) 个字符,并且想要替换该值,可以使用 zero-width positive lookbehind模式。
示例:替换标签值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"));
关于java - 如何更改java中标签之间的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58534658/