Java 替换 URL 中斜杠之间或之后的任何数字

标签 java regex replace

在过去的一个小时里,我一直在用头撞墙,试图想出一种使用 Java 的 Eloquent 方法(应用程序是用 Java 编写的,所以我必须使用它)来处理特定的问题。我试图用主题标签替换 RESTful URL 中的任何数字(即使它有前导零),以便我们可以跟踪特定调用的次数,无论 ID 是什么。以下是我想要做的一些示例:

http://host.com/api/person/1234需要是http://host.com/api/person/#####

http://host.com/api/person/1234/jobs需要是http://host.com/api/person/#####/jobs

http://host.com/api/person/1234/jobs/321需要是http://host.com/api/person/#####/jobs/#####

http://host.com/api/person/abc1234/jobs需要入住http://host.com/api/person/abc1234/jobs

为了保持统一,将插入的主题标签始终是 5 个主题标签。我使用两个步骤完成此工作,我试图找出一种使用正则表达式和replaceAll 来完成此操作的方法,尽管如果其他人知道更好的方法来一步完成它,我也对此持开放态度。

最佳答案

您可以使用replaceAll()使用这个简单的正则表达式的方法:

(?<=/)\\d+

这意味着“匹配斜线(/)后的所有数字”。

示例:

List<String> urls = Arrays.asList("http://host.com/api/person/1234", "http://host.com/api/person/1234/jobs", "http://host.com/api/person/1234/jobs/321", "http://host.com/api/person/abc1234/jobs", "http://host.com/api/person/1234abc/jobs");
for (int i = 0; i < urls.size(); i++) {
   urls.set(i, urls.get(i).replaceAll("(?<=/)\\d+(?=/|$)", "#####"));
}
System.out.println(urls.toString());

// Result:
// [http://host.com/api/person/#####, http://host.com/api/person/#####/jobs, http://host.com/api/person/#####/jobs/#####, http://host.com/api/person/abc1234/jobs, host.com/api/person/1234abc/jobs]

Ideone

关于Java 替换 URL 中斜杠之间或之后的任何数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38318726/

相关文章:

java - 无法在 Android Studio 中构建项目

javascript string.replace $1 如果它是某个值?

python - 替换 SQL 查询中的值

java - addProperty 包括带有 XMLConfiguration 的空白

java - 使用 MultiActionController 定义 Spring Rest API

java - 为什么无法在正则表达式匹配器中返回类型化组?

regex - Powershell替换和删除

regex - perl 正则表达式不是字符串的开头

regex - 在PowerShell中使用正则表达式获取子字符串

jquery - 根据类替换 div 中的段落文本