Regexp

Le
pierre
Bonjour à tous !

Je chercher à faire une regexp qui permettrait de :
- changer toutes les occurences d'un terme (monsite), sauf lorsque
celui-ci fait parti d'un lien en .com (www.monsite.com)

Au début, j'ai pensé à /monsite/ mais cela change toutes les
occurences.
J'ai essayé /monsite[^.]/ mais cela ne marche plus pour monsite.net

Je vous remercie par avance pour votre aide !

Pierre
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Thomas vO
Le #18143481
À (at) Mon, 15 Dec 2008 02:24:21 -0800 (PST),
""
Bonjour à tous !

Je chercher à faire une regexp qui permettrait de :
- changer toutes les occurences d'un terme (monsite), sauf lorsque
celui-ci fait parti d'un lien en .com (www.monsite.com)

Au début, j'ai pensé à /monsite/ mais cela change toutes l es
occurences.
J'ai essayé /monsite[^.]/ mais cela ne marche plus pour monsite.net

Je vous remercie par avance pour votre aide !



(où $str contient ce que vous voulez modifier)

if ($str =~ m/monsite/ and $str !~ m/monsite.com/) {
$str =~ s/monsite/monnouveausite/g;
}

normalement, ça devrait faire l'affaire... (sauf s'il y a plusieurs
occurences de monsite dont une avec monsite.com sur une ligne si vous
procédez par ligne)

--
Thomas vO -
Pierre Valade
Le #18144011
On 15 déc, 11:33, Thomas vO wrote:
À (at) Mon, 15 Dec 2008 02:24:21 -0800 (PST),
""
> Bonjour à tous !

> Je chercher à faire une regexp qui permettrait de :
> - changer toutes les occurences d'un terme (monsite), sauf lorsque
> celui-ci fait parti d'un lien en .com (www.monsite.com)

> Au début, j'ai pensé à /monsite/ mais cela change toutes les
> occurences.
> J'ai essayé /monsite[^.]/ mais cela ne marche plus pour monsite.net

> Je vous remercie par avance pour votre aide !

(où $str contient ce que vous voulez modifier)

if ($str =~ m/monsite/ and $str !~ m/monsite.com/) {
   $str =~ s/monsite/monnouveausite/g;

}

normalement, ça devrait faire l'affaire... (sauf s'il y a plusieurs
occurences de monsite dont une avec monsite.com sur une ligne si vous
procédez par ligne)

--
Thomas vO -


Merci Thomas. Mais ce n'est pas possible de le faire plus simplement
avec une seule REGEX ?
Cela revient à dire :
Comment matcher la chaîne /monsite/ mais jamais /monsite.com/ ?

Ce n'est pas possible ?
Damien Wyart
Le #18144131
* Pierre Valade
Mais ce n'est pas possible de le faire plus simplement avec une seule
REGEX ? Cela revient à dire : Comment matcher la chaîne /monsite/ mais
jamais /monsite.com/ ?



Regarder du côté de la syntaxe (?!pattern) dans perlre
(http://perldoc.perl.org/perlre.html ou
http://perl.enstimac.fr/DocFr/perlre.html pour une version en Français
un peu plus ancienne).

--
DW
mpg
Le #18144281
Le (on) lundi 15 décembre 2008 11:24, a écrit (wrote) :

Je chercher à faire une regexp qui permettrait de :
- changer toutes les occurences d'un terme (monsite), sauf lorsque
celui-ci fait parti d'un lien en .com (www.monsite.com)

Au début, j'ai pensé à /monsite/ mais cela change toutes les
occurences.
J'ai essayé /monsite[^.]/ mais cela ne marche plus pour monsite.net



Est-ce que ce n'est pas justement un cas d'école d'utilisation d'une
assertion « lookahead » ?

s/monsite(?!.com)/autresite/g

semble faire l'affaire chez moi.

Manuel.
mpg
Le #18144261
Le (on) lundi 15 décembre 2008 13:18, mpg a écrit (wrote) :

s/monsite(?!.com)/autresite/g



Gnarf, grillé par Damien.

M.
Pierre Valade
Le #18144741
On 15 déc, 13:32, mpg
Le (on) lundi 15 décembre 2008 13:18, mpg a écrit (wrote) :

> s/monsite(?!.com)/autresite/g

Gnarf, grillé par Damien.

M.



Merci beaucoup, c'est parfait !
Publicité
Poster une réponse
Anonyme