スキャンメソッドと一致メソッドで1つの正規表現の動作が異なるのはなぜですか?
str = "A man, a plan, a canal -- Panama"
/\w+/.match(str).to_s #=> #<MatchData "A"> i.e. just "A"
str.scan(/\w+/) #=> ["A", "man", "a", "plan", "a", "canal", "Panama"]
メソッドは同じ結果をもたらすはずですよね?
match
は最初の一致のみを返します。これは、それが行うことであるためです。一方で、scan
すべての一致を返します。使用される正規表現は、実際にはまったく同じように機能します。これを参照してください。