修复ReUtil.replaceAll空指针问题(issue#IDPHVW@Gitee)

This commit is contained in:
Looly
2026-02-09 09:14:27 +08:00
parent c2abe4c9d3
commit a6b1bebeac
3 changed files with 12 additions and 7 deletions

View File

@@ -18,6 +18,7 @@
* 【core 】 修复`BufferUtil`copy歧义问题issue#IDN097@Gitee
* 【core 】 修复`JschSessionPool`回收导致的session未关闭问题issue#4223@Github
* 【core 】 修复`XmlUtil.xmlToBean`option参数无效问题issue#4226@Github
* 【core 】 修复`ReUtil.replaceAll`空指针问题issue#IDPHVW@Gitee
-------------------------------------------------------------------------------------------------------------
# 5.8.43(2026-01-04)

View File

@@ -4,10 +4,7 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.comparator.LengthComparator;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.exceptions.UtilException;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.lang.PatternPool;
import cn.hutool.core.lang.RegexPool;
import cn.hutool.core.lang.Validator;
import cn.hutool.core.lang.*;
import cn.hutool.core.lang.func.Func1;
import cn.hutool.core.lang.mutable.Mutable;
import cn.hutool.core.lang.mutable.MutableObj;
@@ -216,7 +213,7 @@ public class ReUtil {
* @param pattern 编译后的正则模式
* @param content 被匹配的内容
* @param withGroup0 是否包括分组0此分组表示全匹配的信息
* @param findAll 是否查找所有匹配到的内容,{@code false}表示只读取第一个匹配到的内容
* @param findAll 是否查找所有匹配到的内容,{@code false}表示只读取第一个匹配到的内容
* @return 匹配后得到的字符串数组按照分组顺序依次列出未匹配到返回空列表任何一个参数为null返回null
* @since 4.0.13
*/
@@ -234,7 +231,7 @@ public class ReUtil {
result.add(matcher.group(i));
}
if(false == findAll){
if (false == findAll) {
break;
}
}
@@ -885,7 +882,8 @@ 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 = replacement.replace("$" + var, matcher.group(group));
replacement = StrUtil.replace(replacement, "$" + var, matcher.group(group));
}
matcher.appendReplacement(sb, escape(replacement));
result = matcher.find();

View File

@@ -244,4 +244,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);
}
}