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

Java如何编写正则去除URL中除版本号外的数字字符以实现URI归一化

URI归一化正则解决方案

适配需求的正则表达式

Java代码中可直接使用以下正则,匹配所有需要删除的数字字符,自动跳过版本号相关数字:

String regex = "(?<!v|V|\\d|\\.)\\d+(?!\\d|\\.)";

使用方式

直接调用String的replaceAll方法,将匹配到的内容替换为空字符串即可:

// 示例工具方法
public static String normalizeUri(String rawUri) {
    String regex = "(?<!v|V|\\d|\\.)\\d+(?!\\d|\\.)";
    return rawUri.replaceAll(regex, "");
}

效果验证

测试用例1(路径含纯数字段)

  • 输入:https://app.url.com/user/1234567
  • 输出:https://app.url.com/user/

测试用例2(含查询参数与多版本号)

  • 输入:https://api.url.com/logging/v1/log/analytics-multi/no-auth?clientSendTimestamp=1622719272795&id=863256543&clienttimeout=14000&hs_static_app=automation-ui&hs_static_app_version=1.3520
  • 输出:https://api.url.com/logging/v1/log/analytics-multi/no-auth?clientSendTimestamp=&id=&clienttimeout=&hs_static_app=automation-ui&hs_static_app_version=1.3520

正则逻辑说明

  • 负向回顾断言(?<!v|V|\\d|\\.):确保匹配的数字前不是版本号前缀v/V、其他数字或小数点,避免误删版本号内容
  • \\d+:匹配连续1个及以上的数字字符
  • 负向前瞻断言(?!\\d|\\.):确保匹配的数字后不是其他数字或小数点,进一步过滤带小数的版本号片段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 14:33:02