J'essaie d'écrire une expression régulière en PHP. A partir de ce code, je veux faire correspondre "bar".
<data info="foo">
"bar"|tr
</data>
J'ai essayé ces deux regex, sans succès. Il correspond à "foo"> "bar".
$regex = "/"(.*?)"|tr/s";
$regex = "/"[^"]+(.*?)"|tr/s";
Est-ce que quelqu'un peut m'aider?
Réponses:
3 pour la réponse № 1Vous devez échapper à la barre oblique inverse dans les chaînes de PHP:
$regex = "/"([^"]*)"\|tr/s";
J'ai ajouté un groupe de capture pour obtenir le contenu des citations qui vous intéressent.
Comme vous semblez appliquer le regex au XML, je veux juste vous avertir que XML et les expressions régulières ne sont pas compatibles. Regex est uniquement recommandé en association avec un DOM.
0 pour la réponse № 2
"w+"
devrait correspondre à n'importe quel mot char entre parenthèses
0 pour la réponse № 3
Essaye ça:
$regex = "/"([^">]+)"|tr/s"
Si vous voulez faire correspondre seulement des lettres et des chiffres, vous pouvez le faire:
$regex = "/"([wd]+)"|tr/s"
0 pour la réponse № 4
$regex = "/"(.+?)"(?=|tr)/"
Va correspondre "bar"
(y compris les guillemets), et vous avez le bar
chaîne (sans les guillemets) dans 1 $. Les usages regarder en avant.