# irb
a = "barfoobazfoobaofoo"
#Pour le match
a.match(/ba./)
=> #<MatchData "bar">
#Pour scan
a.scan(/ba./)
=> ["bar", "baz", "bao"]
match renvoie un objet MatchData
scan est renvoyé sous forme de tableau.
#irb
# match
a.match(/baa./)
=> nil
# scan
a.scan(/baa./)
=> []
Pour match, nil est retourné, scan renvoie un tableau vide.
Match ne renvoie pas de tableau, donc essayer de boucler les résultats entraînera une erreur. Puisque scan renvoie un tableau, il peut être mis en boucle. (En d'autres termes, l'analyse peut être traitée en passant le bloc tel quel, vous pouvez donc le faire ↓)
# irb
a.scan(/ba./) {|s| p s*2}
"barbar"
"bazbaz"
"baobao"
Puisque match retourne nil, il devient faux au moment du branchement conditionnel. Notez que scan est [], donc ce sera vrai pour le branchement conditionnel.
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