59 votes

Ruby global match regexp?

Dans d'autres langues, vous pouvez utiliser // g pour une correspondance globale.

Cependant, en rubis:

 "hello hello".match /(hello)/
 

Ne capture qu'un bonjour

Comment capturer tout bonjour?

77voto

AboutRuby Points 4675

Vous pouvez utiliser la méthode de numérisation. La méthode d'analyse vous donnera un tableau de toutes les correspondances ou, si vous transmettez un bloc, transmettez chaque correspondance au bloc.

 "hello1 hello2".scan(/(hello\d+)/)   # => [["hello1"], ["hello2"]]

"hello1 hello2".scan(/(hello\d+)/).each do|m|
  puts m
end
 

J'ai écrit sur cette méthode, vous pouvez en lire plus ici vers la fin de l'article.

12voto

wuputah Points 8189

utilisez String#scan . Il retournera un tableau de chaque correspondance, ou vous pouvez passer un bloc et il sera appelé à chaque correspondance.

Tous les détails sur http://ruby-doc.org/core/classes/String.html#M000812

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X