Expression régulière

Résolu/Fermé
fabien.joubert Messages postés 35 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 31 juillet 2008 - 20 juin 2007 à 10:44
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 20 juin 2007 à 16:06
Bonjour

Savez vous ce que signifie l'expression régulière '/\(\'([^\']+)/'
J'avoue que je ne comprends pas bien
Merci à ceux qui pourront me répondre

4 réponses

mamiemando Messages postés 33390 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 novembre 2024 7 803
20 juin 2007 à 10:58
[^\'] tout caractère autre que \ ou '
[^\']+ suite de 1 à n caractères autres que \ ou '
([^\']+) stocker la la suite de 1 à n caractère autre que \ ou '
/\(\' .... / : la chaîne commence par /(' et fini par /.

A noter que si c'est un sed les / de début et fin servent en fait à délimiter l'expression régulière.
http://veille-srv.inist.fr/dilib/v04Veille/Documentation/UnixShell/sed.fre.html

Exemple:
s/É/É/g

signifie remplace (s/) tous (/g) les É par des É

Bonne chance
0
fabien.joubert Messages postés 35 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 31 juillet 2008 14
20 juin 2007 à 11:09
Merci bcp
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
20 juin 2007 à 12:47
Salut,

il faut savoir avec quel outils tu utilises ta regex


Dans une classe de caractère \ à un comportement un peu spécial comme d'ailleurs par tout.
Donc même à l'intérieur d'une classe pour reconnaître un \ il faut le doubler avec un \ donc \\ ce qui donne [^\\]

Si je prends le cas [^\'] alors si l'interpretation que Miss a donné est correcte on pourrait écrire [^'\] mais on risque d'avoir des surprises puisqu'en ce moment le \ va permettre de reconnaître ] en tant que caractère, donc il ne s'agit plus d'une classe de caractère

En bref dans ton cas l'apostrophe simple à un \ avant qui n'es pas vraiment nécessaire pour ne pas le reconnaître. C'est suffisant [^']


Mais comme l'a bien precisé Miss il faut savoir avec quel outils tu utilises cette regex.
Pour Perl voilà la traduction

'/\(\'([^\']+)/'

reconnaître une paranthèse ouvrante suivi d'un apostrophe simple et ensuite il faut capturer tout les caractères non énumére par la classe (dans notre cas il s'agit d'apostrophe simple) une fois minimum, autant que tu peux maximum

si c'est pour sed on tombe sur une autre situation, il s'agit de l'interprétation par le shell en plus de sed

En bref, pour avoir une explication plus claire il faut nous dire quel outils t'utilise pour cette regex.
Merci.
0
fabien.joubert Messages postés 35 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 31 juillet 2008 14
20 juin 2007 à 16:03
eee je ne sais pas... je suis désolé.
je n'ai pas installé les outils.
de plus je ne connais pas bien le fonctionnement du php
je ne suis donc vraiment pas sur de bien répondre...

merci quand même
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
20 juin 2007 à 16:06
Salut,

de plus je ne connais pas bien le fonctionnement du php
je ne suis donc vraiment pas sur de bien répondre...


Ben, tu viens de repondre, c'est du php :-))
Et les regex sont plutôt proches de Perl :-)
0