web-dev-qa-db-fra.com

ruby opérateur "= ~"

En Ruby, j'ai lu certains des opérateurs, mais je n'ai pas trouvé =~. Quel est =~ pour, ou qu'est-ce que cela signifie? Le programme que j'ai vu a

regexs = (/\d+/)
a = somestring
if a =~ regexs

Je pense que cela comparait si somestring était égal à des chiffres, mais existe-t-il un autre usage et quelle est la définition correcte de =~ opérateur?

104
kamen raider

L'opérateur =~ Fait correspondre l'expression régulière à une chaîne et renvoie soit le décalage de la correspondance à partir de la chaîne, si elle est trouvée, sinon nil.

/mi/ =~ "hi mike" # => 3 
"hi mike" =~ /mi/ # => 3 

"mike" =~ /Ruby/ # => nil 

Vous pouvez placer la chaîne/regex de chaque côté de l'opérateur, comme vous pouvez le voir ci-dessus.

151
Mike Lewis

Cet opérateur compare les chaînes aux expressions régulières.

s = 'how now brown cow'

s =~ /cow/ # => 14
s =~ /now/ # => 4
s =~ /cat/ # => nil

Si la chaîne correspond à l'expression, l'opérateur renvoie l'offset et sinon, il renvoie nil. C'est un peu plus compliqué que ça: voir la documentation ici; c'est une méthode dans la classe String.

36
DigitalRoss

= ~ est un opérateur de correspondance d'expressions régulières qui renvoie l'index du début de la correspondance (ou nil s'il n'y a pas de correspondance).

Voir ici pour la documentation.

15
Tim Destan