Java正则表达式替换原始字符串中的组值

标签 java regex replace

我有一个特定的要求,即找到一个模式并通过保留模式(分隔符)来替换原始字符串中匹配组(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/

相关文章:

java - Java 中正则表达式回溯直到溢出

regex - nifi route文本处理器使用问题

java - 正则表达式一个衬里提取模式匹配组

svn - 在 Subversion 中替换整个目录树的最佳方法?

javascript - 使用具有大括号的正则表达式获取字符串的匹配项并替换所有包含大括号的内容

java - ArrayList 到 String 没有 Android Studio 中的空格

java - 数组到字符串以附加到 JFrame GUI 中的文本区域?

java - 使用 swagger codegen 生成后端代码时添加自定义注解

java - 在 tomcat servlet 中使用 java 编辑 .txt 文件的问题

python - 使用 Pandas 从数据框的所有项目中删除字符串