[Ruby] Différence entre match / scan

J'écrirai réellement

# 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.

Si l'expression régulière ne correspond pas

#irb

# match
a.match(/baa./)
=> nil

# scan
a.scan(/baa./)
=> []

Pour match, nil est retourné, scan renvoie un tableau vide.

Considération

Considération 1

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"

Considération 2

Puisque match retourne nil, il devient faux au moment du branchement conditionnel. Notez que scan est [], donc ce sera vrai pour le branchement conditionnel.

référence

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

[Ruby] Différence entre match / scan
[Ruby] Différence entre obtenir et publier
[Ruby] Différence entre is_a? Et instance_of?
Remarque: Différence entre Ruby "p" et "met"
Différence entre "|| =" et "instance_variable_defined?" Dans Ruby memo
[Ruby] Différence entre print, put et p
[Ruby] Différence entre les put et les retours, les valeurs de sortie et de retour
Différence entre vh et%
Différence entre i ++ et ++ i
[Ruby] J'ai réfléchi à la différence entre each_with_index et each.with_index
Différences entre les classes et les instances dans Ruby
[Java] Différence entre == et égal
Différence entre CUI et GUI
Différence entre les variables et les variables d'instance
Différence entre mockito-core et mockito-all
Différence entre l'installation de bundle et de bundle
Différence entre render et redirect_to
Différence entre List et ArrayList
Différence entre .bashrc et .bash_profile
Différence entre StringBuilder et StringBuffer
Différence entre render et redirect_to
La différence entre la programmation qui utilise des classes Ruby et la programmation qui n'utilise pas
[Ruby] Peut-être que vous ne comprenez pas vraiment? [Différence entre la classe et le module]
Facile à comprendre la différence entre la méthode d'instance Ruby et la méthode de classe.
Différence entre la méthode d'instance et la méthode de classe
Trouvez la différence entre les types de liste
Différence entre l'opérateur == et la méthode égale
[Java] Différence entre Hashmap et HashTable
[Terminal] Différence entre irb et pry
JavaServlet: différence entre executeQuery et executeUpdate
Différence entre l'opérateur == et la méthode eqals
Différence approximative entre RSpec et minitest
[Rails] Différence entre find et find_by
Différence entre la variable d'instance et la variable de classe
[JAVA] Différence entre abstrait et interface
Différence entre Thymeleaf @RestController et @Controller
Différence entre Stream map et flatMap
[Java] Différence entre array et ArrayList
Différence entre le type primitif et le type de référence
Différence entre string.getByte () et Hex.decodeHex (string.toCharaArray ())
[Java] Différence entre fermable et fermable automatiquement
[Java] Différence entre StringBuffer et StringBuilder
[Java] Différence entre longueur, longueur () et taille ()
[rails] Différence entre redirect_to et render
[Android] Différence entre finish () et return;