You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java如何使用正则表达式将URL中数字路径变量替换为*

解决方案

你之前使用的\/\d+.*无法得到预期结果的原因是.*会贪婪匹配第一个数字段后的所有内容,不符合分段替换纯数字路径段的需求。
符合需求的正则表达式Java写法为(?<=/)\\d+(?=/|$),直接调用String的replaceAll方法将匹配内容替换为*即可。

代码示例

public class UrlIdReplace {
    public static void main(String[] args) {
        String regex = "(?<=/)\\d+(?=/|$)";
        // 第一个测试用例
        String url1 = "https://stackoverflow.com/questions/ask/123/456";
        String res1 = url1.replaceAll(regex, "*");
        System.out.println(res1); // 输出:https://stackoverflow.com/questions/ask/*/*

        // 第二个测试用例
        String url2 = "https://stackoverflow.com/questions/ask/123/456/find";
        String res2 = url2.replaceAll(regex, "*");
        System.out.println(res2); // 输出:https://stackoverflow.com/questions/ask/*/*/find
    }
}

正则规则说明

  • (?<=/):正向肯定后视断言,要求匹配的数字前必须是路径分隔符/,确保数字是路径段的起始部分
  • \\d+:匹配1个及以上的阿拉伯数字
  • (?=/|$):正向肯定前瞻断言,要求匹配的数字后要么是路径分隔符/,要么是URL整体结尾,确保匹配的是完整的纯数字路径段

该规则不会误替换/user123/、?id=456这类混有非数字字符的路径段、查询参数中的数字,更贴合ID类路径变量的替换需求。

内容的提问来源于stack exchange,提问作者Shehan Simen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 17:39:05