我正在使用Java / Groovy通过RegEx在字符串上查找匹配项(并提取它们)。在性能方面,在字符串(例如5000字符)上查找200或更多正则表达式匹配的最佳方法是什么。简而言之,是否可以避免为每个RegEx扫描字符串?
我可以使用java提供的Pattern和Matcher类,但是我必须编译200个模式,然后将字符串传递给matcher 200次。这是唯一的方法吗?
答案 0 :(得分:3)
如果您的正则表达式没有通用匹配项,您可以使用替代方法将它们组合成一个巨大的匹配项,例如
( regex1 ) | ( regex2 ) | .... | ( regexN )
但是考虑到问题的复杂性,我认为您应该考虑从正则表达式切换到正确的扫描程序/解析器组合。这需要时间,但最终的解决方案将更易于管理。你为什么不看看Antlr?