我有越来越多的正则表达式,我用它来解析搜索“有趣”错误和调试语句的日志文件.我现在将它们分成5个桶,其中大部分都落入3个大桶中.到目前为止,我有超过140种模式,而且这个模式正在不断增长.
大多数正则表达式都很简单,但它们也相当独特,所以我用单一模式捕获多个匹配的机会很少.由于我匹配的性质,模式往往是模糊的,因此很少匹配,所以我在每个输入行上做一个TON工作,最终结果是它无法匹配任何东西或匹配最后的通用之一.
由于输入的数量(数百兆字节的日志文件),我有时会等待一两分钟才能完成脚本.因此,我希望有一个更有效的解决方案.不过,我对牺牲速度的清晰度并不感兴趣.
我目前的正则表达式设置如下:
if (($line =~ m{Failed in routing out}) || ($line =~ m{Agent .+ Failed}) || ($line =~ m{Record Not Exist in DB}) || ...
是否有更好的方法来构建它,以便它更有效,但仍然可维护?谢谢!