在Ruby中优化正则表达式



是否可以优化以下ruby正则表达式?

%r{(.*(?:^|s))#{pfx}s+#([w-.:/]+)s+(.+)}.match(line)
/[^s]x40todo/.match(line)
/x40todo(?!s+#)/.match(line)
/x40todos+#s/.match(line)
/[^s]TODO:?/.match(line)
/TODO(?!:?s+#)/.match(line)
/TODO:?s+#s/.match(line)
%r{([w-.]+)(?::(d+)(?:(m|h)[a-z]*)?)?(?:/([A-Z]+))?}.match(text)

事实上,我想2-6->没有办法优化,除非有可能使用grep检查行是否需要调用此regexp#match??

正则表达式可以改进,但如果不知道匹配什么,我无法说明如何改进。但是有两个通用的优化。

  1. 使用Regexp.union将它们转换为单个正则表达式
  2. 如果只想知道它是否匹配,请使用match?而不是match。这避免了生成MatchData对象的开销

最新更新