Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/09/2011, 13h03   #1
Membre Expert
 
Avatar de Anduriel
 
Homme
Étudiant
Inscription : février 2004
Messages : 2 168
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2004
Messages : 2 168
Points : 1 277
Points : 1 277
Par défaut 2e parenthèse capturante selon la 1ere

Bonjour,

J'aimerais trouver les chaines de le forme:
== chaine ==
mais pas:
== chaine ===

Comment préciser que je veux à droite le même nombre de caractères qu'à gauche?

Merci
Anduriel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 16h01   #2
Modérateur
 
Avatar de Bisûnûrs
 
Josselin
Développeur Web
Inscription : janvier 2004
Messages : 9 050
Détails du profil
Informations personnelles :
Nom : Josselin
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2004
Messages : 9 050
Points : 12 181
Points : 12 181
Un truc comme ça :

Code :
1
2
3
4
5
6
$char   = '==';
$chaine = '== chaine ==';
 
if ( preg_match( '#^('.$char.') .* \1$#', $chaine ) ) {
   echo 'ok';
}
Bisûnûrs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 20h42   #3
Membre Expert
 
Avatar de Anduriel
 
Homme
Étudiant
Inscription : février 2004
Messages : 2 168
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2004
Messages : 2 168
Points : 1 277
Points : 1 277
Merci !
Anduriel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 12h07   #4
Membre Expert
 
Avatar de Anduriel
 
Homme
Étudiant
Inscription : février 2004
Messages : 2 168
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2004
Messages : 2 168
Points : 1 277
Points : 1 277
Re,

En fait le \1 reproduit la première parenthèse capturante, mais rien n'empêche d'avoir == chaine === qui fonctionne, puisque dans mon cas, il n'y a pas de fin de ligne délimitée par $.

Du coup j'ai fait (qui semble fonctionner):

Code :
$text = preg_replace_callback('`(\=+) ([^\n]+?) \1([^=]{1}|$)`', 'plan', $text);
Je veux grâce à ça:
- récupérer une chaine sur une seule ligne
- empêcher en fin de motif d'avoir des = en trop, cad au moins un caratère quelconque qui ne soit pas =, ou arriver à la fin de ma chaine complète.

Est-ce que cela semble propre (notamment les +? pour cette histoire de "gourmandise" que je n'ai jamais trop compris)?

Merci
Anduriel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h19.


 
 
 
 
Partenaires

Hébergement Web