我只想替换最后一次出现 {id}
或 {objId}
或 {anything else}
的最后一次出现,而 /
在java中使用 xyz
的最后一次出现。
输入:
/test/data/{id}/moreData/{id}
/test/data/{id}/moreData/{objId}
/test/data/{id}/moreData/{anything else}
预期输出:
/test/data/{id}/moreData/xyz
/test/data/{id}/moreData/xyz
/test/data/{id}/moreData/xyz
请为此建议一条正则。
在评论中阐明,您似乎正在寻求替换斜线/
后出现的最后一个占位符。为此,您可以使用以下等级,
[^/]+$
在这里,[^/]
是一个被否定的字符类,除了斜线/
和+
以外,捕获任何字符,表示一个或多个字符,而$
表示字符串的末端,这将确保这将匹配任何不包含/
的字符串末端的文本。因此,只需使用它匹配并替换为xyz
或您选择的任何字符串。
演示
Java代码,
List<String> list = Arrays.asList("/test/data/{id}/moreData/{id}","/test/data/{id}/moreData/{objId}","/test/data/{id}/moreData/{anything else}");
list.forEach(x -> System.out.println(x + " --> " + x.replaceAll("[^/]+$", "xyz")));
打印,
/test/data/{id}/moreData/{id} --> /test/data/{id}/moreData/xyz
/test/data/{id}/moreData/{objId} --> /test/data/{id}/moreData/xyz
/test/data/{id}/moreData/{anything else} --> /test/data/{id}/moreData/xyz