2009-02-23 8 views
1
(?:) 

C'est une expression régulière ruby ​​valide, quelqu'un pourrait-il me dire ce que cela signifie?Expression Ruby

Merci

Répondre

3

Il ne saisira pas la partie de la chaîne correspondante dans un backreference (i.e. \ 1).

+0

@ gpojd, Comment devrais-je comprendre le '?' et ici? – eric2323223

+0

Par exemple, (\ d +) capturera des chiffres consécutifs dans une référence arrière comme \ 1. Si vous voulez grouper une partie de l'expression régulière, mais que vous ne voulez pas les capturer, vous utiliserez (?: \ D +). La capture inutile des données peut diminuer les performances. – gpojd

9

Comme d'autres l'ont dit, il est utilisé comme syntaxe de non-capture pour une regex, mais c'est aussi une syntaxe ruby ​​valide en dehors d'une regex.

En ruby ​​?: est la valeur entière pour le caractère deux-points:

% irb 
irb> ?: 
=> 58 
irb ":"[0] 
=> 58 

Ajout entre parenthèses ne change pas la valeur: (?:) == ?:

Lorsque vous ajoutez des espaces (? :), il est l'opérateur ternaire, qui est essentiellement raccourci pour if/then/else en ruby, donc l'instruction (bool ? truish : falsy) est équivalente à

if bool then 
    truish 
else 
    falsy 
end 
+0

?: Évalue à '?' dans Ruby 1.9. – Chuck