这样做的红宝石方式是什么?

时间:2014-06-12 18:22:48

标签: ruby regex

我刚才写了这样的东西,并且知道必须有一个更漂亮的方法来做到这一点。

if REGEX.match(foostring) 
   match = REGEX.match(foostring)
   #do things with match data
end

有人知道吗?

2 个答案:

答案 0 :(得分:3)

更好的解决方案是使用正则表达式匹配块

string.match(/regex/) do |match|
  ...
end

这是红宝石的方式!

请注意,当您运行$1时,您也可以通过全局变量string.match(/regex/)访问匹配项。

答案 1 :(得分:2)

你可以做到

/<reg_exp>/.match('foostring') do |match|
   #do things with match data
end

Regexp#match

  

返回描述匹配的MatchData对象,如果没有匹配则返回nil。如果给出了一个块,如果匹配成功,则使用MatchData调用该块