PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > fr.comp.lang.php > comment exclure dans une expression rationnelle posix ?
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
comment exclure dans une expression rationnelle posix ?

Réponse
 
LinkBack Outils de la discussion
Vieux 23/08/2007, 16h43   #1 (permalink)
Jean-Francois Ortolo
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut comment exclure dans une expression rationnelle posix ?

Bonjour

J'ai besoin de nettoyer un fichier contenant des enregistrements et
des champs. Je fais cela avec un script.

Ce script utilise la fonction ereg_replace() pour remplacer ce qui
n'est pas désiré dans le token, par rien ( "" ).

Donc, mon expression rationnelle POSIX ( je ne connais que POSIX ),
devra reconnaître tout ce qui n'est pas ce que je veux garder.

Appelons les tokens que je veus garder: arg1 et arg2, par exemple.

Pour trouver uniquement arg1 et/ou arg2 dans le token, je dois
utiliser quelle expression rationnelle ?

"[^(arg1)(arg2)]" , ou

"[^(arg1)(arg2)]+" , ou

"^[^(arg1)(arg2)]$" , ou

"^[^(arg1)(arg2)]+$"


Ensuite, en supposant que l'expression rationnelle ci-desus, soit
mise dans la variable: $pattern, je peux faire:

$champ = ereg_replace($pattern, "", $champ);

Et ma variable $champ sera alors nettoyée des scories qui
l'encombrent. Elle ne gardera que arg1 et/ou arg2.

Merci beaucoup de vos réponses.

Bien à vous.

Amicalement.

Jean-François Ortolo

--
Visitez mon site gratuit donnant des Statistiques
et des Historiques Graphiques sur les Courses de Chevaux:
http://www.ortolojf-courses.com
  Réponse avec citation
Vieux 23/08/2007, 19h52   #2 (permalink)
Jean-Francois Ortolo
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: comment exclure dans une expression rationnelle posix ?

Jean-Francois Ortolo wrote:
J'ajoute...

Qu'il peut y avoir plusieurs sous-token arg1 ou arg2 dans le token
initial, et que je veux extraire avec ereg_replace(), ces seuls
sous-tokens, à l'exclusion de ce qui n'est pas arg1, ou arg2.

Donc, il faut que l'expression rationnelle posix, reconnaisse tout
sauf les sous-tokens arg1 et arg2.

Merci beaucoup de vos réponses.

Bien à vous.

Amicalement.

Jean-François Ortolo


PS J'ai vaguement vu, sur un commentaire du PHP Manual de cette
fonction ereg_replace(), que l'on devait indiquer comme expression
rationnelle, pou reconnaitre tout sauf le mot [WORD], cette expression:

[^[WORD]]{0}

Mais je ne vois pas du tout la logique de ces apostrophes avec le 0,
et je ne sais pas si ça marche avec plusieurs sous-token de type
[WORD1], [WORD2], etc...


--
Visitez mon site gratuit donnant des Statistiques
et des Historiques Graphiques sur les Courses de Chevaux:
http://www.ortolojf-courses.com
  Réponse avec citation
Vieux 23/08/2007, 21h56   #3 (permalink)
P'tit Marcel
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: comment exclure dans une expression rationnelle posix ?

Jean-Francois Ortolo a écrit :
> J'ai besoin de nettoyer un fichier contenant des enregistrements et
> des champs. Je fais cela avec un script.
> Ce script utilise la fonction ereg_replace() pour remplacer ce qui
> n'est pas désiré dans le token, par rien ( "" ).


est-ce qui ne serait pas plus simple de créer une nouvelle chaîne ne
contenant que les expressions recherchées ?

> Donc, mon expression rationnelle POSIX ( je ne connais que POSIX ),
> devra reconnaître tout ce qui n'est pas ce que je veux garder.
> Appelons les tokens que je veus garder: arg1 et arg2, par exemple.
> Pour trouver uniquement arg1 et/ou arg2 dans le token, je dois
> utiliser quelle expression rationnelle ?



moi je coderais :

if(preg_match_all('`(arg1|arg2)`', $ligne, $reg)) {
$nouvelle_ligne = implode('', $reg[0]);
}
else {
$nouvelle_ligne = $ligne;
}

(d'accord, c'est pas avec ereg, mais ereg c'est _M A L_ ;-)

--
P'tit Marcel
stats sur les forums modérés http://www.centrale-lyon.org/ng/
  Réponse avec citation
Vieux 24/08/2007, 13h26   #4 (permalink)
Jean-Francois Ortolo
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: comment exclure dans une expression rationnelle posix ?

P'tit Marcel wrote:
>
> moi je coderais :
>
> if(preg_match_all('`(arg1|arg2)`', $ligne, $reg)) {
> $nouvelle_ligne = implode('', $reg[0]);
> }
> else {
> $nouvelle_ligne = $ligne;
> }
>
> (d'accord, c'est pas avec ereg, mais ereg c'est _M A L_ ;-)
>


Bonjour Monsieur

Finalement, après quelques essais, j'ai trouvé.

L'expression rationnelle est:

"[^(arg1)(arg2)]+"


C'est-à-dire: "Tout sauf arg1 ou arg2, pouvant compter plusieurs
caractères."

Mes précédents essais avaient raté, parce que mes argument arg1
comportaient des expressions rationnelles du type: ([arg1_1arg1_2]) au
lieu de: (arg1_1|arg1_2)

Avec cette dernière formulation ça marche.

Je vous avoue que je suis rétif aux expressions rationnelles Perl,
que je n'ai jamais abordé réellement, et au vu du PHP Manual, qui me
paraissent très compliquées à maîtriser.

Merci beaucoup de votre réponse.

Bien à vous.

Amicalement.

Jean-François Ortolo

--
Visitez mon site gratuit donnant des Statistiques
et des Historiques Graphiques sur les Courses de Chevaux:
http://www.ortolojf-courses.com
  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 01h02.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,10376 seconds with 12 queries