从 URL 中去除所有数字字符的正则表达式模式(版本号除外)

Regex pattern to strip all the numeric characters from the URL (except for the version number)

我正在 Java 中编程,我需要“规范化”URI,这意味着,无论时间戳、portalId、超时、应用程序版本等的查询参数值如何,都将 URI 视为唯一的。

这是我的正则表达式模式: (?<=/)[0-9]+

它适用于以下 URI: https://app.url.com/user/1234567

但是,它不适用于下面的 URI。是否可以使用一种正则表达式模式来适应这两种情况?

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

示例中的数字似乎在 /= 以及 version=

之后

您可能要做的是匹配 1 个或多个断言 /= 到左侧的数字,但不是例如 version= 到左侧。

(?<=[/=])(?<!version=)\d+

模式匹配:

  • (?<=[/=]) 正向后视,直接向左断言 /+
  • (?<!version=)负向后视,断言不是version=直接向左
  • \d+ 匹配 1+ 个数字

Regex demo

要删除路径 and/or 查询参数中的两个尾随数字 ID:

url = url.replaceAll("/\d+\b|\?.*", "");