Question

Je dois modifier les éléments qui entourent certains contenus dans une chaîne, en laissant le contenu tel quel. Je le fais avec une expression régulière, mais lorsque je remplace en utilisant le paramètre positional ($ 1), il utilise uniquement la première correspondance.

Par exemple, si j'ai cette chaîne:

<strong>I want</strong> to change <i>this</i> text, 
but <u>I can't</u>. <div class="question">Why?</div>.

Je veux le changer en:

<strong>I want</strong> to change <i>this</i> text, 
but <u>I can't</u>. <div class="question">Why?</div>.

Mais je ne peux que comprendre ceci:

<strong>I want<strong> to change <strong>this<strong> text, 
but <strong>I can't<strong>. <strong>Why?<strong>.

J'utilise l'expression régulière suivante:

\x26lt;(.*?)\x26gt;

(globalement, en le remplaçant par " <$1> ")

Je suppose que le problème est que je ne peux pas dire combien de correspondances seront trouvées ni comment se référer à chacune d’elles. Peut-être que j'aurais pu utiliser $ + en Perl, mais cela ne fonctionne pas. Je fais cela avec le module regex de Yahoo Pipes. Cela devrait être très similaire aux implémentations PHP, autant que je sache.

Comment utiliser chaque correspondance séparément dans Yahoo Pipes?

Était-ce utile?

La solution

Il pourrait être plus facile de remplacer le &lt; et le &gt; indépendamment. De cette façon, cela devient une simple recherche-remplacement sans qu'il soit nécessaire d'utiliser des références arrière.

Autres conseils

Vous devriez pouvoir effectuer une seule opération si vous cochez la case g, comme dans cette capture d'écran ...: capture d'écran
(source: aleax.it )

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top