一个字符串上有数百个RegEx

我正在使用Java / Groovy通过RegEx在字符串上查找匹配(并提取它们)。 在性能方面,在字符串(例如5000字符)上查找200或更多正则表达式的匹配的最佳方法是什么。 简而言之,是否可以避免为每个RegEx扫描字符串?

我可以使用java提供的Pattern和Matcher类,但是我将编译200个模式,然后将字符串传递给matcher 200次。 这是唯一的方法吗?

如果你的正则表达式没有共同的匹配,你总是可以通过使用替代方法将它们组合成一个巨大的匹配项,例如

( regex1 ) | ( regex2 ) | .... | ( regexN ) 

但是考虑到问题的复杂性,我认为您应该考虑从正则表达式转换为正确的扫描程序/解析器组合。 这需要时间,但最终的解决方案将更易于管理。 你为什么不看看Antlr ?