我有一个特定的要求,即找到一个模式并通过保留模式(分隔符)来替换原始字符串中匹配组(2)的值,我正在使用该模式
:(\w+)[:\|]+(.*)
使用这种模式,它可以正确解析值,但我无法替换 group(2) 的值。例如我有一个多行输入字符串
:20:9405601140
:2D::11298666
:28C:20/1
我想用新值(1234)替换标签 20 的值(9405601140),所以我期望的输出是
:20:1234
:2D::11298666
:28C:20/1
谢谢
最佳答案
使用这个:
input = input.replaceAll("(:20):(\\d+)(?!\\d)", "$1:1234");
这里(\\d+)(?!\\d)
正在检查数字是否 after the :20:
后面是否有数字。
但是,如果您只想替换 :20:9405601140
这里很简单:
input = input.replaceAll(":20:9405601140(?!\\d)", ":20:1234");
关于Java正则表达式替换原始字符串中的组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22573953/