java - 如何更改java中标签之间的内容?

标签 java regex replaceall fix-protocol

我正在寻找一个正则表达式,我可以在其中查找 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/

相关文章:

java - 后缀到中缀 - 括号

java - 比较作为映射的键和值的集合的大小

regex - 字符串中的智能模式匹配

php - htaccess 404 在添加尾部斜杠时无法正常工作

Java Regex - 如何替换以以下开头和结尾的模式

java - 这个 replaceAll() 有什么问题?

java - myString.replaceAll(regex ,"") 未按预期工作

java - Maven 资源插件 : how to copy resources to target folder and keep time stamps?

java - StAX - 使用 XMLStreamWriter 设置版本和编码

javascript - 使用正则表达式匹配字符串中的对象的对象属性