rails,ruby - 给定正则表达式 - 确定匹配计数

时间:2010-11-18 19:35:35

标签: ruby-on-rails

给出类似的东西:

 message.split(/\n.* at.* XXXXXXXX wrote:.*/m).first

如果匹配但是如果没有匹配则这可以正常工作ruby将返回所有消息。我想首先看看是否匹配,如果是,那么返回上面。

想法?感谢

2 个答案:

答案 0 :(得分:49)

如果您尝试计算匹配数,那么您使用的是错误的方法。 Split被设计为取一个字符串并将其切成小块,但正如您所观察到的,如果没有任何匹配,那么它将返回整个内容。我想你想使用String.scan:

message.scan(/\n.* at.* XXXXXXXX wrote:.*/m).size

答案 1 :(得分:1)

分裂将返回一个数组。所以你可以检查长度> 1

m =  message.split(/\n.* at.* XXXXXXXX wrote:.*/m)
if m.length > 1 
   return m.first
else
   return nil 
end