Aide sur les regexp de Perl - Perl - Programmation
Marsh Posté le 14-11-2002 à 22:10:06
impulse a écrit a écrit :
|
non justement je veux une regexp qui qui permet de laisser passer toutes les chaines de caracteres sauf celles qui contiennent la sequence 'ti'.
Marsh Posté le 14-11-2002 à 22:40:23
Citation : non justement je veux une regexp qui qui permet de laisser passer toutes les chaines de caracteres sauf celles qui contiennent la sequence 'ti'. |
Euh... tu pourrais pas prendre le pb ds l'autre sens :
Si la chaine contient "ti" ...
Sinon ...
Marsh Posté le 14-11-2002 à 23:01:57
la raison pour laquelle je veux utiliser une seule regexp c'est que cette expression va etre mise dans un fichier ini a partir duquel le script viendra chercher son filtre.
du coup il me suffira de changer cette exp seulement dans le fichier ini au lieu de me balader dans le source du script.
en gros je cherche un truc comme un fait en maths quand on definit des ensembles sans qq points, genre R-{5,9}.
ya pas une regexp pour decrire "[a-z] sans {t,i}" ?
Marsh Posté le 14-11-2002 à 23:03:21
je sais qu'on peut utiliser la negation dans une regexp
pour la syntaxe, c'est une autre histoire
Marsh Posté le 15-11-2002 à 09:29:03
En fait, si tu as une chaine contenant "tata toto tati", tu ne veux récupérer que "tata toto" ou bien récupérer TOUT sauf "ti" (comme ici : "tata toto ta" ) ?
CAS 1 : virer toute chaîne contenant titi
Code :
|
résultat : $string contient désormais "tata toto"
CAS 2 : supprimer toute séquence de 2 lettres == "ti"
Code :
|
résultat : $string contient désormais "tata toto ta "
Je précise : les 2 exemples ci-dessus sont montrés clairement (du - j'espère !) mais il y a moyen de faire + efficace, en étant + propre, mais aussi (c'est mon avis) en faisant moins clair pour la compréhension
Zut, j'arrête po d'éditer mon post
Pour le CAS 2 : on peut aussi faire sacom :
Code :
|
Marsh Posté le 15-11-2002 à 11:35:25
merci aricoh de m'aider mais ce que tu m'as fourni n'est pas tout a fait c eque je cherche: je ne cherche qu'une regexp et pas un moreceau de code.
je m'explique: cette regexp est destinee a etre placee dans un fichier d'initialisation que l'on modifiera a souhait pour effectuer des operations de filtrage sur une liste de fichiers, sans avoir a modifier le script perl.
ayant une liste de fichiers, je veux accepter certains fichiers (notamment tous ceux qui correspondent au pattern defini avec cette regexp), donc ceux qui sont du type 'xxxxxxti.xxx' et 'xxxxxxtu.xxx' ne doivent pas etre acceptes.
Marsh Posté le 15-11-2002 à 12:14:55
physis a écrit a écrit : je m'explique: cette regexp est destinee a etre placee dans un fichier d'initialisation que l'on modifiera a souhait pour effectuer des operations de filtrage sur une liste de fichiers, sans avoir a modifier le script perl. |
Ok, alors dans ce cas, il faudrait que ton fichier d'initialisation contienne la liste des mots-clés à bannir/accepter uniquement
Ensuite, te reste plus qu'à exécuter le script Perl en lui fournissant la dite liste des mots clés via @ARGV
Marsh Posté le 14-11-2002 à 21:43:28
Je cherche a mettre en place une fonction de filtrage en Perl a l'aide de ses expressions regulieres.
J'ai donc besoin d'une regexp utilisee dans un if pour faire ca:
- faux pour une chaine qui contient la sequence 'ti',
- vrai sinon.
(par exemple 'tata' est bon, 'tati' et 'tita' ne sont pas bons).
Je peux faire ca: /[a-su-z][a-hj-z]/ mais je me demande si on pourrait pas definir un ensemble et lui dire "tout sauf 't' et 'i'" (comme on fait en math pour les ensembles 'R-{5}' -> l'ensemble des reels sans 5).
Merci d'avance