Domanda

Ho bisogno di cambiare gli elementi che circondano alcuni contenuti in una stringa, lasciando il contenuto così com'è. Lo sto facendo con un'espressione regolare, ma quando sostituisco usando il parametro posizionale ($ 1), usa solo la prima corrispondenza.

Ad esempio, se ho questa stringa:

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

Voglio cambiarlo in:

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

Ma posso solo ottenere questo:

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

Sto usando la seguente regex:

\x26lt;(.*?)\x26gt;

(a livello globale e sostituendolo con " <$1> ")

Suppongo che il problema sia che non riesco a dire quante corrispondenze verranno trovate e come fare riferimento a ognuna. Forse in Perl avrei potuto usare $ +, ma non funziona. Lo sto facendo con il modulo regex di Yahoo Pipes. Dovrebbe essere molto simile alle implementazioni di PHP, afaik.

Come posso utilizzare ciascuna partita separatamente in Yahoo Pipes?

È stato utile?

Soluzione

Potrebbe essere più semplice sostituire &lt; e &gt; in modo indipendente. In questo modo diventa semplicemente un rimpiazzo che non ha bisogno di usare riferimenti secondari.

Altri suggerimenti

Dovresti essere in grado di eseguire una singola operazione selezionando la casella di controllo g, come in questo screenshot ...: screenshot
(fonte: aleax.it )

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top