以替换字符串模式的最后一次发生的正则模式



我只想替换最后一次出现 {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

最新更新