regex 正则表达式模式,用于替换字符串中最后出现的模式

goqiplq2  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(77)

在Java中,我只想用xyz替换最后一次出现的/之后出现的{id}{objId}{anything else}模式。
输入:

/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

请建议一个正则表达式。

mutmk8jj

mutmk8jj1#

正如注解中所阐明的,您似乎希望替换出现在斜杠/之后的最后一个占位符。为此,您可以使用以下正则表达式:

[^/]+$

这里,[^/]是一个取反字符类,它捕获除斜杠/之外的任何字符,+表示一个或多个字符,$表示字符串的结尾,这将确保它将匹配任何出现在不包含/的字符串结尾的文本。因此,只需使用它匹配并替换为xyz或您选择的任何字符串。

Demo

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

相关问题