Bonjour
J'aimerai faire une recherche sur un enseble de caractères tout en
interdisants certains. Par exemple, je voudrais chercher les ensebles
comprenant des lettres (\w), des tirest(-) mais pas de _ ni de nombre
(\d). Il me faut donc "mixer" [-\w] et [^_\d]. J'ai essayé [-\w^_\d]
mais cela ne marche pas.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
axel tournevis
[-a-zA-Z] pour QUE des lettres ( w FAUX = [a-zA-Z0-9_] ), des tirest(-) [D_] pour tout sauf des chiffres et _
ta question n'est pas claire
AT.
"julien" a écrit dans le message de news: 3fd3f49c$0$19301$
Bonjour J'aimerai faire une recherche sur un enseble de caractères tout en interdisants certains. Par exemple, je voudrais chercher les ensebles comprenant des lettres (w), des tirest(-) mais pas de _ ni de nombre (d). Il me faut donc "mixer" [-w] et [^_d]. J'ai essayé [-w^_d] mais cela ne marche pas.
Merci Julien
[-a-zA-Z] pour QUE des lettres ( w FAUX = [a-zA-Z0-9_] ), des tirest(-)
[D_] pour tout sauf des chiffres et _
ta question n'est pas claire
AT.
"julien" <julien@sobrier.net> a écrit dans le message de news:
3fd3f49c$0$19301$626a54ce@news.free.fr...
Bonjour
J'aimerai faire une recherche sur un enseble de caractères tout en
interdisants certains. Par exemple, je voudrais chercher les ensebles
comprenant des lettres (w), des tirest(-) mais pas de _ ni de nombre
(d). Il me faut donc "mixer" [-w] et [^_d]. J'ai essayé [-w^_d]
mais cela ne marche pas.
[-a-zA-Z] pour QUE des lettres ( w FAUX = [a-zA-Z0-9_] ), des tirest(-) [D_] pour tout sauf des chiffres et _
ta question n'est pas claire
AT.
"julien" a écrit dans le message de news: 3fd3f49c$0$19301$
Bonjour J'aimerai faire une recherche sur un enseble de caractères tout en interdisants certains. Par exemple, je voudrais chercher les ensebles comprenant des lettres (w), des tirest(-) mais pas de _ ni de nombre (d). Il me faut donc "mixer" [-w] et [^_d]. J'ai essayé [-w^_d] mais cela ne marche pas.
Merci Julien
Michel Rodriguez
axel tournevis wrote:
J'aimerai faire une recherche sur un enseble de caractères tout en interdisants certains. Par exemple, je voudrais chercher les ensebles comprenant des lettres (w), des tirest(-) mais pas de _ ni de nombre (d). Il me faut donc "mixer" [-w] et [^_d]. J'ai essayé [-w^_d] mais cela ne marche pas.
[-a-zA-Z] pour QUE des lettres ( w FAUX = [a-zA-Z0-9_] ), des tirest(-) [D_] pour tout sauf des chiffres et _
Sauf que [a-z] ne prends pas en compte les caracteres accentues, ce qui peut poser un probleme en francais.
En fait ca depend aussi de la version de Perl utilisee et du jeu de caractere (latin1 ou utf8).
Voila un script pour tester differentes option, la derniere regexp marche chez moi, avec perl 5.8.1 et des donnees en UTF8. Au moins tu peux t'en servir pour tester diverses regexps:
#!/usr/bin/perl -w use strict; use charnames ':full';
my @regexps= ( '[-a-zA-Z]', '([^Wd_]|-)', '[p{L}-]', 'p{IsOk}' );
my $format= "%-30s" . (" %-10s" x scalar @regexps) . "n"; printf $format, "texte", @regexps;
# regarde man perlunicode pour comprendre ce que ca fait sub IsOk { return <<'END'; +utf8::L +utf8::InLatin1Supplement 002D END }
__DATA__ toto toto9 9 toto-tata toto_tata étété été-té été_té
<-- fin du script!
Le resultat? texte [-a-zA-Z] ([^Wd_]|-) [p{L}-] p{IsOk} toto X X X X toto9 _ _ _ _ 9 _ _ _ _ toto-tata X X X X toto_tata _ _ _ _ étété _ _ _ X été-té _ _ _ X été_té _ _ _ _
axel tournevis wrote:
J'aimerai faire une recherche sur un enseble de caractères tout en
interdisants certains. Par exemple, je voudrais chercher les ensebles
comprenant des lettres (w), des tirest(-) mais pas de _ ni de nombre
(d). Il me faut donc "mixer" [-w] et [^_d]. J'ai essayé [-w^_d]
mais cela ne marche pas.
[-a-zA-Z] pour QUE des lettres ( w FAUX = [a-zA-Z0-9_] ), des tirest(-)
[D_] pour tout sauf des chiffres et _
Sauf que [a-z] ne prends pas en compte les caracteres accentues, ce qui
peut poser un probleme en francais.
En fait ca depend aussi de la version de Perl utilisee et du jeu de
caractere (latin1 ou utf8).
Voila un script pour tester differentes option, la derniere regexp
marche chez moi, avec perl 5.8.1 et des donnees en UTF8. Au moins tu
peux t'en servir pour tester diverses regexps:
#!/usr/bin/perl -w
use strict;
use charnames ':full';
my @regexps= ( '[-a-zA-Z]', '([^Wd_]|-)', '[p{L}-]', 'p{IsOk}' );
my $format= "%-30s" . (" %-10s" x scalar @regexps) . "n";
printf $format, "texte", @regexps;
# regarde man perlunicode pour comprendre ce que ca fait
sub IsOk
{ return <<'END';
+utf8::L
+utf8::InLatin1Supplement
002D
END
}
__DATA__
toto
toto9
9
toto-tata
toto_tata
étété
été-té
été_té
<-- fin du script!
Le resultat?
texte [-a-zA-Z] ([^Wd_]|-) [p{L}-] p{IsOk}
toto X X X X
toto9 _ _ _ _
9 _ _ _ _
toto-tata X X X X
toto_tata _ _ _ _
étété _ _ _ X
été-té _ _ _ X
été_té _ _ _ _
J'aimerai faire une recherche sur un enseble de caractères tout en interdisants certains. Par exemple, je voudrais chercher les ensebles comprenant des lettres (w), des tirest(-) mais pas de _ ni de nombre (d). Il me faut donc "mixer" [-w] et [^_d]. J'ai essayé [-w^_d] mais cela ne marche pas.
[-a-zA-Z] pour QUE des lettres ( w FAUX = [a-zA-Z0-9_] ), des tirest(-) [D_] pour tout sauf des chiffres et _
Sauf que [a-z] ne prends pas en compte les caracteres accentues, ce qui peut poser un probleme en francais.
En fait ca depend aussi de la version de Perl utilisee et du jeu de caractere (latin1 ou utf8).
Voila un script pour tester differentes option, la derniere regexp marche chez moi, avec perl 5.8.1 et des donnees en UTF8. Au moins tu peux t'en servir pour tester diverses regexps:
#!/usr/bin/perl -w use strict; use charnames ':full';
my @regexps= ( '[-a-zA-Z]', '([^Wd_]|-)', '[p{L}-]', 'p{IsOk}' );
my $format= "%-30s" . (" %-10s" x scalar @regexps) . "n"; printf $format, "texte", @regexps;
# regarde man perlunicode pour comprendre ce que ca fait sub IsOk { return <<'END'; +utf8::L +utf8::InLatin1Supplement 002D END }
__DATA__ toto toto9 9 toto-tata toto_tata étété été-té été_té
<-- fin du script!
Le resultat? texte [-a-zA-Z] ([^Wd_]|-) [p{L}-] p{IsOk} toto X X X X toto9 _ _ _ _ 9 _ _ _ _ toto-tata X X X X toto_tata _ _ _ _ étété _ _ _ X été-té _ _ _ X été_té _ _ _ _
julien
Michel Rodriguez wrote:
#!/usr/bin/perl -w use strict; use charnames ':full';
my @regexps= ( '[-a-zA-Z]', '([^Wd_]|-)', '[p{L}-]', 'p{IsOk}' ); Merci beaucoup, j'ai lu avec attention perlunicode.
J'ai un probleème avec le p{IsOK}. Dans l'exemple ci-dessus, il fallait remplacer les ' par " pour IsOK soit "interprété". Par contre, ça pose problème pour des choses du sytle $line=~/p{IsOK}/g; car IsOK n'ets pas inteprété (non remplacé par la valeur de retour de sub IsOk{}) et j'ai donc une message d'erreur "Can't find Unicode property definition "IsOk"." J'ai essayé différentes méthodes pour faire interprété le IsOK, mais cela ne fonctionne pas (si je fais my $regexp="p{IsOk}"; j'ai droit à Unrecognized escape p passed through).
Merci Julien
Michel Rodriguez wrote:
#!/usr/bin/perl -w
use strict;
use charnames ':full';
my @regexps= ( '[-a-zA-Z]', '([^Wd_]|-)', '[p{L}-]', 'p{IsOk}' );
Merci beaucoup, j'ai lu avec attention perlunicode.
J'ai un probleème avec le p{IsOK}. Dans l'exemple ci-dessus, il fallait
remplacer les ' par " pour IsOK soit "interprété".
Par contre, ça pose problème pour des choses du sytle
$line=~/p{IsOK}/g; car IsOK n'ets pas inteprété (non remplacé par la
valeur de retour de sub IsOk{}) et j'ai donc une message d'erreur "Can't
find Unicode property definition "IsOk"." J'ai essayé différentes
méthodes pour faire interprété le IsOK, mais cela ne fonctionne pas (si
je fais my $regexp="p{IsOk}"; j'ai droit à Unrecognized escape p
passed through).
#!/usr/bin/perl -w use strict; use charnames ':full';
my @regexps= ( '[-a-zA-Z]', '([^Wd_]|-)', '[p{L}-]', 'p{IsOk}' ); Merci beaucoup, j'ai lu avec attention perlunicode.
J'ai un probleème avec le p{IsOK}. Dans l'exemple ci-dessus, il fallait remplacer les ' par " pour IsOK soit "interprété". Par contre, ça pose problème pour des choses du sytle $line=~/p{IsOK}/g; car IsOK n'ets pas inteprété (non remplacé par la valeur de retour de sub IsOk{}) et j'ai donc une message d'erreur "Can't find Unicode property definition "IsOk"." J'ai essayé différentes méthodes pour faire interprété le IsOK, mais cela ne fonctionne pas (si je fais my $regexp="p{IsOk}"; j'ai droit à Unrecognized escape p passed through).