Discussion:
test d'égalité et expression régulière
(trop ancien pour répondre)
Chupin Maxime
2011-03-11 10:19:39 UTC
Permalink
Bonjour,

Ma question est vraiment simple, mais je ne trouve la réponse nulle
part :-( (sans doute n'ai-je pas bien cherché).
Je souhaite tester si une chaîne de caractère est un suite de 0 ou
plusieurs espaces. Je sais tester si une chaîne *contient* une suite de
plusieurs espaces ($machaine=~/\s*/) mais pas si elle est égale.
J'ai pensé faire $machaine eq "\s*", mais cela ne semble pas
fonctionner.

Désolé de poser une question si simple :-).
--
Maxime CHUPIN
http://mc.notezik.com
Olivier Miakinen
2011-03-11 10:25:57 UTC
Permalink
Bonjour,
Post by Chupin Maxime
Ma question est vraiment simple, mais je ne trouve la réponse nulle
part :-( (sans doute n'ai-je pas bien cherché).
Je souhaite tester si une chaîne de caractère est un suite de 0 ou
plusieurs espaces. Je sais tester si une chaîne *contient* une suite de
plusieurs espaces ($machaine=~/\s*/) mais pas si elle est égale.
Tu peux utiliser les assertions début de chaîne ^ et fin de chaîne $ :

/^\s*$/

Cordialement,
--
Olivier Miakinen
Chupin Maxime
2011-03-11 10:58:25 UTC
Permalink
On Fri, 11 Mar 2011 11:25:57 +0100
Post by Olivier Miakinen
/^\s*$/
Cordialement,
Merci !
--
Maxime CHUPIN
http://mc.notezik.com
Marc Espie
2011-03-11 13:12:54 UTC
Permalink
Post by Chupin Maxime
On Fri, 11 Mar 2011 11:25:57 +0100
Post by Olivier Miakinen
/^\s*$/
Cordialement,
Merci !
Attention aux eventuelles subtilites liees aux fins de ligne.
Xavier
2011-03-11 18:17:20 UTC
Permalink
Post by Marc Espie
Attention aux eventuelles subtilites liees aux fins de ligne.
Parce que tu ne commences pas sytématiquement par un chomp() après avoir
lu une ligne.
--
XAv
In your pomp and all your glory you're a poorer man than me,
as you lick the boots of death born out of fear.
(Jethro Tull)
Marc Espie
2011-03-11 18:30:17 UTC
Permalink
Post by Xavier
Post by Marc Espie
Attention aux eventuelles subtilites liees aux fins de ligne.
Parce que tu ne commences pas sytématiquement par un chomp() après avoir
lu une ligne.
Qui a dit que c'etait une ligne, justement ?
Xavier
2011-03-11 20:21:20 UTC
Permalink
Post by Marc Espie
Qui a dit que c'etait une ligne, justement ?
Juste. Mais pas plus tard qu'hier, j'ai eu précisément le problème sur
des chaînes ($ m'attrapait un \n qui traînait), et chomp le résoud de la
même façon :-)
--
XAv
In your pomp and all your glory you're a poorer man than me,
as you lick the boots of death born out of fear.
(Jethro Tull)
Stephane CHAZELAS
2011-03-11 20:32:09 UTC
Permalink
Post by Chupin Maxime
Bonjour,
Ma question est vraiment simple, mais je ne trouve la réponse nulle
part :-( (sans doute n'ai-je pas bien cherché).
Je souhaite tester si une chaîne de caractère est un suite de 0 ou
plusieurs espaces. Je sais tester si une chaîne *contient* une suite de
plusieurs espaces ($machaine=~/\s*/) mais pas si elle est égale.
J'ai pensé faire $machaine eq "\s*", mais cela ne semble pas
fonctionner.
Désolé de poser une question si simple :-).
La negation est simple:

$machaine !~ /[^ ]/

Note que \s comprend SPC, \t, \r, \n, \f, (pas \v bizarrement)
et possiblement plus en unicode.
--
Stephane
Loading...