是否可以优化以下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??
正则表达式可以改进,但如果不知道匹配什么,我无法说明如何改进。但是有两个通用的优化。
- 使用
Regexp.union
将它们转换为单个正则表达式 - 如果只想知道它是否匹配,请使用
match?
而不是match
。这避免了生成MatchData对象的开销