Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中更改标记之间的内容?_Java_Regex_Replaceall_Fix Protocol - Fatal编程技术网

如何在java中更改标记之间的内容?

如何在java中更改标记之间的内容?,java,regex,replaceall,fix-protocol,Java,Regex,Replaceall,Fix Protocol,我正在搜索一个正则表达式,在这个正则表达式中,我可以在FIX中查找某些标记,然后向它们添加信息。 我想将标记引用为字符串,并使用ReplaceAll方法在正则表达式中搜索它。但是,我不知道当我不想替换正则表达式中的字符串,而想替换它后面的字符串(表示标记中的内容)时该怎么做。因为主体是一组由(0x01)字符分隔的name=value对,并且您想替换值,所以可以使用模式 示例:替换标记49的值 body = body.replaceAll("(?<=\u000149=)[^\u0001]*"

我正在搜索一个正则表达式,在这个正则表达式中,我可以在FIX中查找某些标记,然后向它们添加信息。 我想将标记引用为字符串,并使用ReplaceAll方法在正则表达式中搜索它。但是,我不知道当我不想替换正则表达式中的字符串,而想替换它后面的字符串(表示标记中的内容)时该怎么做。

因为主体是一组由(0x01)字符分隔的
name=value
对,并且您想替换值,所以可以使用模式

示例:替换标记
49的值

body = body.replaceAll("(?<=\u000149=)[^\u0001]*",
                       Matcher.quoteReplacement("new value"));

挑剔:请注意消息中的第一个标记前面没有SOH。但替换它的值应该很少见,因为它表示修复版本。我正要键入相同的值,但我可以想象集线器可能会这样做@ChristophJohn@Andreas。这段代码很好,但我需要将内容添加到标记中,而不是替换它。如何引用正则表达式中的现有内容?@TziporahMualem为此添加了解决方案。只是出于好奇:使用正则表达式而不是修复库是否有特殊原因?您可能只处理日志文件中的消息?
body = body.replaceAll("(?<=\u000149=)[^\u0001]*",
                       "new text before $0 new text after"));