J'ai cette regex: ^\/\*
pour vérifier et voir si un fichier contient ces deux caractères au début. Je suis en train d'itérer sur de nombreux fichiers source C++ essayant de voir lequel d'entre eux contient cela. Le problème est que si un fichier contient ceci:Pourquoi cette expression régulière ne fonctionne pas correctement?
#include <source.h>
/* this is a comment */
cela correspond également à la regex. Je ne comprends pas pourquoi, puisque l'expression régulière n'a pas le drapeau multiligne.
Voici le code pour le regex:
multi = /^\/\*/
Pourquoi est-ce pas correspondant seulement au début du texte? Voici en gros tout ce que je fais:
data = File.read(filename)
if data =~ multi
puts "file starts with multiline header"
end
Ce type de sux. Est-ce que c'est uniquement le comportement de Ruby, ou est-ce que toutes les langues ont ceci? – Geo
La plupart des langues ont un commutateur appelé "mode multiligne" qui leur permet de se comporter comme ça, mais Ruby est le seul que je connaisse qui le fait par défaut. Le mode multiligne de Perl ressemble à '/^test/m' – Andomar