diff --git a/hutool-core/src/main/java/cn/hutool/v7/core/regex/ReUtil.java b/hutool-core/src/main/java/cn/hutool/v7/core/regex/ReUtil.java index 0802fe04ec..d1c7235cf1 100644 --- a/hutool-core/src/main/java/cn/hutool/v7/core/regex/ReUtil.java +++ b/hutool-core/src/main/java/cn/hutool/v7/core/regex/ReUtil.java @@ -915,7 +915,7 @@ public class ReUtil { String replacement = replacementTemplate; for (final String var : varNums) { final int group = Integer.parseInt(var); - replacement = replacement.replace("$" + var, matcher.group(group)); + replacement = StrUtil.replace(replacement, "$" + var, matcher.group(group)); } matcher.appendReplacement(sb, escape(replacement)); result = matcher.find(); diff --git a/hutool-core/src/test/java/cn/hutool/v7/core/regex/ReUtilTest.java b/hutool-core/src/test/java/cn/hutool/v7/core/regex/ReUtilTest.java index 05162d9ddc..502a9ef666 100644 --- a/hutool-core/src/test/java/cn/hutool/v7/core/regex/ReUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/v7/core/regex/ReUtilTest.java @@ -251,4 +251,10 @@ public class ReUtilTest { s = ReUtil.get(PatternPool.EMAIL, mail, 0); assertEquals("a.b@Hutool.cn", s); } + + @Test + void issueIDPHVWTest(){ + final String s = ReUtil.replaceAll("2 倾斜摄影成果", "(^\\d+(\\.\\d+)*)(\\s)(((.*?)(DEM|DOM)?)([(|\\(](.*?)[)|\\)])?$)", "$1$3$5($9)"); + assertEquals("2 倾斜摄影成果()", s); + } }