# irb
a = "barfoobazfoobaofoo"
#Für das Match
a.match(/ba./)
=> #<MatchData "bar">
#Zum Scannen
a.scan(/ba./)
=> ["bar", "baz", "bao"]
match gibt ein "MatchData" -Objekt zurück Der Scan wird als Array zurückgegeben.
#irb
# match
a.match(/baa./)
=> nil
# scan
a.scan(/baa./)
=> []
Für die Übereinstimmung wird Null zurückgegeben. Scan gibt ein leeres Array zurück.
Match gibt kein Array zurück. Wenn Sie also versuchen, die Ergebnisse zu durchlaufen, wird ein Fehler angezeigt. Da der Scan ein Array zurückgibt, kann es geloopt werden. (Mit anderen Worten, der Scan kann verarbeitet werden, indem der Block so wie er ist übergeben wird. Sie können dies also tun ↓)
# irb
a.scan(/ba./) {|s| p s*2}
"barbar"
"bazbaz"
"baobao"
Da match null zurückgibt, wird es zum Zeitpunkt der bedingten Verzweigung falsch. Beachten Sie, dass scan [] ist, sodass dies für die bedingte Verzweigung gilt.
https://docs.ruby-lang.org/ja/latest/method/String/i/match.html https://docs.ruby-lang.org/ja/latest/method/String/i/scan.html
Recommended Posts