【发布时间】:2012-09-07 15:14:57
【问题描述】:
在 Ruby 1.9 中,我会使用 String#match(regexp,start_index)。我确信在 Ruby 1.8 中必须有一个(计算效率高的)等价物,但我找不到它。你知道它是什么吗?
【问题讨论】:
在 Ruby 1.9 中,我会使用 String#match(regexp,start_index)。我确信在 Ruby 1.8 中必须有一个(计算效率高的)等价物,但我找不到它。你知道它是什么吗?
【问题讨论】:
【讨论】:
^.{n} 计算效率不高?正则表达式引擎可能只是偏移到字符串中并从那里开始工作。快速进行基准测试表明,^.{n} 比明显的替代方案 (s[i..-1].match(re)) 稍快。
irb试了下才回答,效率低下。 O(n) 的字符串长度,我将使用它来解析可能是数十或数百兆字节的大文件。根据我所做的测试,在这种情况下,一场比赛可能需要多达 30 秒。
据我所知,在纯 Ruby 1.8 中,没有有效的方法将正则表达式与大字符串匹配,从任意索引开始。
这似乎是一个重大缺陷。我猜这个故事的寓意是:使用 Ruby 1.9!
【讨论】: