以下命令适用于 Ruby 1.9.3p194
> %w(a b c).grep(/a/) { |v| v.upcase }
=> ["A"]
但是如果数组中的任何元素中有斜线,就会抛出 SyntaxError:
> %w(a/ b c).grep(/a/) { |v| v.upcase }
SyntaxError: (irb):41: syntax error, unexpected tMATCH
%Q/a// =~ /a/
我假设我使用 grep 不正确,但我得到的错误确实令人困惑。为什么会引发此错误,以及基于正则表达式在数组中查找元素的正确方法是什么?
更新:
Select 给了我我想要的东西,但我仍然很好奇 grep 是为了什么......
> %w(a/ b c).select {|v| v =~ /a/ }
=> ["a/"]