替换正则表达式的最后一个匹配项

时间:2014-04-29 13:48:49

标签: java regex

如何更换正则表达式的最后一个匹配?我知道这与它有关吗?但我们如何正确使用前瞻?在SO上有一些类似的问题,但他们只需要删除一个最后一个字符,我不能适应整个正则表达式匹配。

// EDIT: the last regex returned "" not "/0/" - the difference is the ?= instead of ?!
String foo = "/0/a/b/c/a/b/c/d".replaceAll("(?=a.b.c).*$","");
assert (foo, "/0/a/b/c/"); // I keep getting /0/   :-(

1 个答案:

答案 0 :(得分:1)

您可以使用以下内容:

String foo = "/0/a/b/c/a/b/c/d".replaceAll("a.b.c(?!.*a.b.c).*", "");

该模式将与a.b.c匹配,后面没有其他a.b.c