Je cours Ruby 1.9.2p290 et Rails 3.1.0.rc5. Quand je lance cette regex, elle correspond à tout:Ruby Regex ne correspondent pas
Ai-je raté quelque chose?
Je cours Ruby 1.9.2p290 et Rails 3.1.0.rc5. Quand je lance cette regex, elle correspond à tout:Ruby Regex ne correspondent pas
Ai-je raté quelque chose?
Pour vous assurer que seule l'extension exacte est adaptée, utilisez
File.delete(f) unless File.extname(f) =~ /^\.(?:flv|gif)$/
Explication:
^ # Start of string
\. # Match .
(?: # Match the following: Either...
flv # flv
| # or
gif # gif
) # End of alternation
$ # End of string
Exactement! Merci beaucoup. – Morten
Je pense que vous voulez correspondre à l'extension ".flv" ou ".gif". Par conséquent, vous pouvez utiliser l'expression rationnelle suivante:
/^(\.flv|\.gif)$/
Votre regex définit un jeu de caractères correspondant ([...]
) et cela donne vrai pour les extensions contenant l'un des caractères de f ', « g », « i », « l ',' v ',' | ','. '. Puisque n'importe quel fichier avec une extension a un point dans l'extension, ceci correspondra à n'importe quel fichier avec n'importe quelle extension.
'/ [. Flv | .gif] /' signifie « un caractère de' .', 'f',' l', 'v',' '', 'g' ou' i' ". –