在this question我要求正则表达式将/abc/def/ghi
变为{/abc/def/ghi
,/def/ghi
,/ghi
}。答案是使用表达式为(?=(/.*))
的前瞻。
是否有正则表达式从同一个字符串{/abc
,/abc/def
,/abc/def/ghi
}中捕获? (订单并不重要。)
答案 0 :(得分:1)
好的,这是一个适用于您的唯一测试用例的解决方案,但我还没有找到将其分组到一个不错的组中的方法:
Matcher m = Pattern.compile("((?<=(^.*))(/[^/]*))").matcher("/abc/def/ghi");
while (m.find()) {
System.out.println(m.group(2) + m.group(3));
}
它基本上会找到每个/ xxx子字符串,但它们会在匹配之前连接所有内容。这适用于您的测试用例,但可能对更复杂的情况有限制。
答案 1 :(得分:-1)
这将做你想要的:
(?<=(/.*)\b)