Groovy如何将路径中stable_dev/后的片段替换为指定new_value?
路径替换正确实现方案
原正则问题说明
你原来拼接的正则匹配规则限制过多,仅能匹配符合「字母数字+非字母数字+字母数字」规则的中间段,无法适配所有可能的路径段格式,同时直接对ArrayList.toString()结果做全局替换可能存在误匹配风险,更建议遍历列表逐个处理路径。
正确实现方法
核心匹配逻辑
我们需要匹配stable_dev/后到下一个/之前的全部内容,用[^/]+即可匹配任意非斜杠字符组成的路径段,匹配规则通用且简洁:
- 匹配正则:
stable_dev/[^/]+/ - 替换目标值:
stable_dev/new_value/
代码实现
1. 直接处理ArrayList toString结果(适配你原有写法)
String result = arrayList.toString().replaceAll("stable_dev/[^/]+/", "stable_dev/new_value/");
2. 更安全的遍历列表逐个替换(推荐)
避免全局替换误修改列表分隔符等非路径内容:
import java.util.List; import java.util.stream.Collectors; // 遍历每个路径单独替换 List<String> processedList = arrayList.stream() .map(path -> path.replaceAll("stable_dev/[^/]+/", "stable_dev/new_value/")) .collect(Collectors.toList());
效果验证
- 原路径:
"stable_dev/201904_xx/text1/text2.zip"→ 替换后:"stable_dev/new_value/text1/text2.zip" - 原路径:
"stable_dev/201904/text5/text6.war"→ 替换后:"stable_dev/new_value/text5/text6.war"
内容的提问来源于stack exchange,提问作者Tiberiu Corneanu
相关产品推荐
相关产品推荐

