我只想用{id}
替换最后一次出现的{objId}
或{anything else}
或/
模式,将xyz
替换为Java。
输入:
/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
请为此建议一个正则表达式。
答案 0 :(得分:3)
正如注释中所阐明的,您似乎正在寻找替换斜杠/
之后出现的最后一个占位符。为此,您可以使用以下正则表达式,
[^/]+$
在这里,[^/]
是一个否定的字符类,它捕获除斜杠/
之外的任何字符,并且+
表示一个或多个字符,而$
表示字符串的末尾确保这将匹配出现在字符串末尾且不包含/
的所有文本。因此,只需匹配使用它并替换为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