Rechercher : dans
Par :

[PHP] - Expression régulière

Dernière réponse le 25 sep 2007 à 12:51:43 anelor, le 19 fév 2007 à 14:15:46 
 Signaler ce message aux modérateurs

Bonjour,

Novice en expressions régulieres, j'aimerai savoir s'il est possible de récupérer une chaine dans ce cas précis :

<balisedébut>(.*)</balisefin>
j'aimerai que le terme COMPLET </balisefin> ne soit pas compris dans le résultat de ma demande, puisque mon code est de cette sorte
<balisedébut>blabla</balisefin><balisedébut></balisefin><balisedébut></balisefin>

Je me retrouve donc avec le résultat :
blabla</balisefin><balisedébut></balisefin><balisedébut>
et non juste le "blabla" attendu

merci de votre aide !

Configuration: Windows XP
Firefox 2.0.0.1

Meilleures réponses pour « [PHP] Expression régulière » dans :
PHP - Expressions régulières Voir Qu'est-ce qu'une expression régulière? Les expressions régulières sont des modèles créés à l'aide de caractères ASCII permettant de manipuler des chaînes de caractères, c'est-à-dire permettant de trouver les portions de la chaîne correspondant au...
[RegExp] Récupérer une adresse IP VoirFinalité Mise en œuvre Explications Interprétation du motif Récupérer une adresse IP Finalité Pour récupérer une IP dans un fichier texte, fichiers journaux, pages web, etc. Mise en œuvre L'expression régulière suivante combinée à la...
Google - Recherche d'une expression exacte VoirLorsque l’on souhaite faire la recherche d’une expression exacte, il suffit de mettre cette expression entre guillemets. Exemple : "animal domestique" référencera uniquement les sites comportant l’expression "animal domestique".
PHP - Structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non, c'est-à-dire si la valeur de son expression vaut 0 ou 1 (le PHP associe le mot clé true à 1...
Javascript - L'objet RegExp VoirLes particularités de l'objet RegExp L'objet RegExp est un objet permettant de manipuler des expressions régulières, c'est-à-dire des modèles créés à l'aide de caractères ASCII permettant de manipuler des chaînes de caractères, afin de trouver des...

1

Reivax962, le 19 fév 2007 à 17:25:20

Bonjour,

Je ne pense pas que tu puisses exclure toute une chaine.
Par contre, tu peux exclure toutes les balises comme ceci :
<balisedébut>([^<]*)</balisefin>
Mais cela ne fonctionnera pas si tu as des sous-balises, du genre
<balisedébut>truc<balise intérieure>chose</balise intérieure></balisefin>

Xavier

Répondre à Reivax962

2

lami20j, le 19 fév 2007 à 18:50:37

Je ne sais pas si en php on à le quantificateur ?
A savoir que le quantificateur * est gourmand et *? et moins gourmand

Voilà avec Perl

$ echo '<balisedébut>blabla</balisefin><balisedébut></balisefin><balisedébut></balisefin>' | perl -ne 'print "\$1 = $1\n" if /<balisedébut>(.*?)<\/balisefin>/'
$1 = blabla


lami20j

Répondre à lami20j

3

 Farfadh, le 25 sep 2007 à 12:51:43

Je viens de tester avec PHP, le quantificateur *? ne fonctionne pas en expression régulière POSIX. Je vais tester en PCRE dès que je saurai comment faire.

Ce problème m'intéresse au plus haut point, j'ai fait un autre test de la façon suivante :

<balisedébut>(.*)<\/balisefin>((.*)<\/balisefin>)*

Mais cela ne fonctionne pas.

Si jamais quelqu'un parvenait à résoudre ce problème, faites-le moi savoir.

Répondre à Farfadh