Mon post précédent a obtenu les balises partiellement dénudés, si elle est ici encore:Perl: Substition global au sein de balise chaîne délimitée
Mon but est de remplacer toutes les occurrences d'un arrière - à un arrière + entre crochets d'étiquette. Permet de prendre la ligne à remplacer ressemble à ceci:
<h> aa- aa- </h> <h> ba- ba- </h>
et devrait ressembler à la suite comme
<h> aa+ aa+ </h> <h> ba+ ba+ </h>.
D'abord, j'ai essayé cette expression:
s/<h>(.*?)-(.*?)<\/h>/<h>$1+$2<\/h>/g;
qui a produit cette sortie:
<h> aa+ aa- </h> <h> ba+ ba- </h>.
T L'option he g conduit à plus d'une substitution par ligne, mais seulement pour la première instance par étiquette (et seulement si les deux parenthèses contiennent le point d'interrogation).
Pour affiner le problème, j'ai ensuite essayé d'obtenir une substitution sans tenir compte des étiquettes. L'expression
s/(.*?)-(.*?)/$1+$2/g;
conduit en effet au résultat souhaité
<h> aa+ aa+ </h> <h> ba+ ba+ </h>.
Cela remplacera en dehors des supports d'étiquettes ainsi, bien sûr.
Alors, quel est le problème avec ma première expression, et comment puis-je atteindre mon objectif de substitution complète entre les parenthèses?
ne pas poster une nouvelle question si vous n'avez pas réellement une nouvelle question, éditez votre question originale. Vous devriez supprimer cette nouvelle question. – Gilles