this question中,我要求使用正则表达式将/abc/def/ghi转换为{/abc/def/ghi/def/ghi/ghi}。答案是对表达式(?=(/.*))使用超前。

是否可以从同一字符串{/abc/abc/def/abc/def/ghi}捕获正则表达式? (顺序并不重要。)

最佳答案

好的,这是一个适用于您唯一的测试用例的解决方案,尽管我还没有找到将其分组为一个不错的组的方法:

Matcher m = Pattern.compile("((?<=(^.*))(/[^/]*))").matcher("/abc/def/ghi");
while (m.find()) {
   System.out.println(m.group(2) + m.group(3));
}


实际上,它会找到每个/ xxx子字符串,但会在该匹配之前将所有内容串联起来。这适用于您的测试用例,但对于更复杂的用例可能会有所限制。

关于java - 重叠正则表达式第二部分,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7762590/

10-12 04:50