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

我想为特定文本匹配java中的正则表达式模式。在匹配时,我需要按相反的顺序查找匹配项

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')