[PHP] Regex

Cokolie -  
jjsteing Messages postés 1613 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour
J'ai un problème avec une regex que j'essaye de faire.
En gros, je veux récupérer les champs d'un fichier Selenium. J'ai donc plusieurs lignes de ce type:
$this->click("rep3_0");
$this->type("nom", "Dupont");
$this->type("prenom", "Martin");
Dans lesquels je veux donc récupérer "nom" et "prenom"
J'ai réussi grâce à une première regex à enlever le début, ce qui fait qu'il me reste des lignes de ce type la:
rep3_0")
nom", "Dupont")
prenom", "Martin")
Je voudrais donc utiliser une seconde fois preg_replace, en remplaçant la fin par une chaine vide, à partir du guillemet.
Mais j'ai un peu de mal à trouver la regex qu'il faut, je voudrais dire une chaine qui commence par " et qui se termine par ")
J'ai donc essayé un truc du genre, en essayant séparément les deux expressions:
/^"/ > commence par "
/\)$/ > termine par ")
Mais ça ne fonctionne pas. Je suis pas très douée en regex, et j'aimerais donc solliciter votre aide pour ce problème :)
De plus, je ne sais pas si c'est vraiment possible de sélectionner toute l'expression de cette façon, en réunissant les deux regex en une.
Merci d'avance pour l'aide
Configuration: Windows XP
Firefox 3.5

4 réponses

  1. Cokolie
     
    J'ai eu la solution sur un autre forum, je la met ici si ça peut aider :)
    <?php
    $str = '$this->click("rep3_0");
    $this->type("nom", "Dupont");
    $this->type("prenom", "Martin");';

    $reg = '#^[^"]*"([^"]+).*#mx';
    print preg_replace($reg, '$1', $str);
    ?>
    1
  2. Cokolie
     
    #^guitare# La chaîne doit commencer par "guitare"
    #guitare$# La chaîne doit se terminer par "guitare"

    C'est bien ce que je fais, /^"/ pour commencer par "
    /")$/ pour terminer par ")

    Je teste mes regex sur ce site : https://lumadis.be/regex/test_regex.php
    Mais non, ça ne marche pas
    0
  3. jjsteing Messages postés 1613 Date d'inscription   Statut Contributeur Dernière intervention   181
     
    ok, met ton post en resolu :)
    0