我正在使用Java / Groovy通过RegEx在字符串上查找匹配项(并提取它们)。在性能上,可以说在5000个字符的字符串上找到200个或更多正则表达式匹配项的最佳方法是什么。简而言之,是否可以避免为每个RegEx扫描字符串?
我可以使用java提供的Pattern和Matcher类,但随后必须编译200个模式,然后将字符串传递给matcher 200次。这是唯一的方法吗?
最佳答案
如果您的正则表达式没有通用的匹配项,则可以始终使用其他替代方式将它们组合成一个巨大的匹配项。
( regex1 ) | ( regex2 ) | .... | ( regexN )
但是考虑到问题的复杂性,我认为您应该考虑从正则表达式转换为适当的扫描仪/解析器组合。这需要花费一些时间,但是最终的解决方案将更易于管理。您为什么不签出Antlr?
关于java - 一串上数百个RegEx,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7022379/