重叠正则表达式第二部分

时间:2011-10-14 02:54:32

标签: java regex

this question我要求正则表达式将/abc/def/ghi变为{/abc/def/ghi/def/ghi/ghi}。答案是使用表达式为(?=(/.*))的前瞻。

是否有正则表达式从同一个字符串{/abc/abc/def/abc/def/ghi}中捕获? (订单并不重要。)

2 个答案:

答案 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)