J'ai des problèmes avec une expression rationnelle. Je regarde un ensemble de fichiers XML et essaye de détecter du texte dans des nœuds spécifiques qui contiennent un saut de ligne.Regex détecter un changement de ligne à l'intérieur d'un nœud XML
Voici quelques exemples de données:
<item name='GenMsgText'><text>The signature will be discarded.</text></item>
<item name='GenMsgText'><text>The signature will be discarded.<break/>
Do you want to continue?</text></item>
Dans cet échantillon, je veux attraper seul le texte dans le deuxième noeud. Je suis venu avec la solution ci-dessous qui utilise une deuxième expression rationnelle, mais j'aimerais savoir si je peux faire la même chose en utilisant un seul.
if ($content =~m{<item name='GenMsgText'>(<textlist>)?<text>(.*?)</text>}si)
{
$t = $2;
if ($t =~m {\n}i)
{
print G $t."\n\n";
}
}
C'est un outil one-shot qui est pas destiné à être réutilisé, donc je voudrais éviter d'avoir à écrire de code d'analyse syntaxique qui est plus que quelques lignes. D'ailleurs, le code ci-dessus fonctionne déjà, j'ai posé la question pour des connaissances personnelles plus que pour un usage réel.
@annakata: En espérant le badge Taxonomist? :) Même si vous êtes le seul à utiliser cette balise, vous l'aurez très bientôt, je suppose ... – Tomalak