Page 1 sur 1

Regex tout sauf un mot

Posté : 29 déc. 2015, 12:51
par kevin254kl
Bonjour à tous,

Je sais que cela a déjà était évoqué mais cela ne fonctionne pas pour moi j'en appelle à votre générosité :)
j'ai cette expressions régulière

Code : Tout sélectionner

(<[a-zA-Z]+.*>)([a-zA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ]+.*)(</[a-zA-Z]+>)
qui va me capter les balise et je peux ainsi modifier le contenu seul problème j'ai des balises script par exemple je souhaiterai donc ne pas les matcher en ne gardant qu'une seul expression régulière, mais les assertion pour un test avec

Code : Tout sélectionner

(?!script)
et j'ai trois lignes

Code : Tout sélectionner

script 2 test2 http
dans notepad pour tester je fais que je remplace cela par test mais voilà le résultat

Code : Tout sélectionner

stestctestrtestitestptestttest test2test testttesteteststestttest2test testhtestttestttestptest
il va donc insérer test partout sauf avant s, si vous pouviez m'expliquer cela serai sympa merci à vous.

Re: Regex tout sauf un mot

Posté : 15 janv. 2016, 04:17
par Genova
Salut,
Je ne sais pas si c'est possible en regexp, mais tu peux clairement le faire avec preg_match_all(). Tu récupères tout ce qui match, et ensuite tu filtres avec une condition.

Par exemple :
preg_match_all('#(<[a-zA-Z]+.*>)([a-zA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ]+.*)(</[a-zA-Z]+>)#', $taChaineDeCaracteres, $m);
for ($i = 0, $total = count($m[0]); $i < $total; $i++) {
   // Si balise script
   if ($m[1][$i] == 'script') {

   }
   else {

   }
}

Re: Regex tout sauf un mot

Posté : 15 janv. 2016, 09:30
par Spols
Et pour ton remplacement, montre nous le code que tu utilise, il vaut mieux utiliser str_replace que strtr

Re: Regex tout sauf un mot

Posté : 15 janv. 2016, 09:46
par kevin254kl
Merci de vos réponses, je fais cela pour matcher des fichier php mais j'utilise surtout notepad pour le remplacement avec regex pour sélectionner un dossier et ces sous dossier afin de gagner du temps, j'ai finalement décidé de matcher les balises spécifiquement label un exemple si cela peut aider d'autres personnes

Code : Tout sélectionner

[^"'](<td.*>)([a-zA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ\s][^\?<...]+)(</td>)
avec une expression comme celle là je match les balises td qui sont pas dans des echos ou balsie php, merci pour votre aide.