次のコマンドはRuby1.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/"]