Regex : précédé d'un nombre impair de guillemets

Rechercher

Regex : précédé d'un nombre impair de guillemets

Par Savageman  -  3 reponses  -  Le 02/02/2011 13:03  -  Editer  - 

 

Bonjour,

J'aimerais savoir s'il était possible, dans une regex, de faire une règle qui dirait "précédé d'un nombre impair de guillemets ?

 

$chaine = '"texte avant """" texte après"';
$pattern = '`"(.+?)"(?!")((?<!"")|(?<="""))`s';
print_r($m);

Ici, je voudrais que la dernière assertion (?

 

Réponses apportées à cette discussion

Par Cyrano  -  Le 02/02/2011 15:01  -  Haut de page  - 

Je peux te proposer ceci :

$pattern = '#"([^"]+)"#';

Partant de là, tu ne captureras que ce qui se trouve entre des paires de guillemets, incluant éventuellement des chaines vides. Ainsi, si tu fais ceci :

<?php
$chaine = '"texte avant """"""""" texte après"';
$pattern = '#"([^"]+)"#';
$aTextes = array();
if(preg_match_all($pattern, $chaine, $sortie))
{
    foreach($sortie[1] as $s)
    {
        if(!empty($s))
        {
            $aTextes[] = $s;
        }
    }
}
echo("<pre>\n");
var_dump($aTextes);
echo("</pre>\n");

Tu vas obtenir ceci :

array(2) {
  [0]=>
  string(12) "texte avant "
  [1]=>
  string(13) " texte après"
}

J'obtiens ce résultat quel que soit le nombre de guillemets orphelins entre les deux chaines. Maintenant, je ne sais pas si ça répond à ta question ?

 
Par Savageman  -  Le 02/02/2011 15:17  -  Haut de page  - 

Pas vraiment.

En fait, mon objectif est de capturer ce qui se trouve entre guillemets, et qui peut contenir des guillemets s'ils sont échapés avec des guillemets.

Donc on commence la capture sur un guillemet et on s'arrête au prochain guillemet non échappé (qui n'est pas doublé / présent en double).

La subtilité étant que ces guillemets échapés peuvent être soit au début, soit au milieu, soit à la fin et pas forcément orphelins.

 

 
Par Cyrano  -  Le 03/02/2011 10:12  -  Haut de page  - 

Ha, effectivement... Il faudrait que je creuse davantage mais là, désolé, je manque de temps. Tu trouveras peut-être des pistes pratiques sur le site de lumadis

 

 

Ajouter une réponse à la discussion

Seuls les membres connectés sont autorisés à poster dans les forums !

Identifiez-vous
Join |  ID/MDP? |