Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

comment exclure dans une expression rationnelle posix ?

3 réponses
Avatar
Jean-Francois Ortolo
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

3 réponses

Avatar
Jean-Francois Ortolo
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
Avatar
P'tit Marcel
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/

Avatar
Jean-Francois Ortolo
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