java正则表达式反向匹配循环
我想为特定文本匹配java中的正则表达式模式。在匹配时,我需要按相反的顺序查找匹配项java正则表达式反向匹配循环,java,regex,Java,Regex,我想为特定文本匹配java中的正则表达式模式。在匹配时,我需要按相反的顺序查找匹配项 Expected output -- 1st match --->[green] 2nd match --->[red] 3rd match --->[blue] 例如: Regex Pattern -- [([^]]*]) Input String -- [blue][red][green] Output -- 1s
Expected output -- 1st match --->[green]
2nd match --->[red]
3rd match --->[blue]
例如:
Regex Pattern -- [([^]]*])
Input String -- [blue][red][green]
Output -- 1st match --->[blue]
2nd match --->[red]
3rd match --->[green]
但我希望比赛的顺序是相反的
Expected output -- 1st match --->[green]
2nd match --->[red]
3rd match --->[blue]
请帮助我们如何形成正则表达式以实现预期的输出。讨论了这个主题,我在那里发布了一个解决方案,为了方便起见添加到这里
如果有人对Java解决方案感兴趣,我实现了一个库来实现这一点
处理所有有效的Java正则表达式构造,并提供实用程序类来包装模式、匹配器和输入,用于反向搜索,以处理所有需要的映射和反向操作。假设您已遵守正则表达式日期”
ArrayList strings=new ArrayList();
Matcher foo=date.Matcher(“foo”);
while(foo.matches()){
strings.add(foo.group());
}
集合。反向(字符串);
@ScaryWombat StringBuilder.reverse将整个字符串反转,如下所示]neerg[]der[]eulb[.我不知道它将如何解决我的问题。请解释meSorry-dumb Comments,我想展示一些您尝试过的代码。现在我通过在ArrayList中保存匹配并反转列表以获得预期的输出来实现。但我需要在regex部分本身中完成。因为如果它们超过10个匹配,我只需要最后一个的10个匹配。因此我迭代我不需要增加列表大小,因为它可能包含100或1000个匹配项。我只需要最后10个。除非添加一些转义符,否则正则表达式不起作用。[([^]
是字符组匹配(
,[
或^
。下一个是]*
匹配0个或多个]
。下一个是]
恰好匹配一个]
。最后一个是)
这会导致模式SyntaxException:Unmatched closing')
。