2009-08-03 13 views
1

文字列内の一部のコンテンツを囲む要素を変更する必要があります。私は正規表現でそれをやっていますが、位置パラメータ($ 1)を使って置換すると、最初のマッチだけが使用されます。私はこの文字列があれば正規表現:各一致を見つけて置換する

はたとえば、:

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

を、私はそれを変更したい:

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

しかし、私はこれだけを取得することができます:

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

私は」次の正規表現を使用してm:

\x26lt;(.*?)\x26gt; 

(グローバル、および「<$1>」とそれを置き換える)

私は問題は私が見つけた、そしてどのようにそれぞれ1を参照するようになりますどのように多くの試合言うことができないですね。おそらくPerlで$ +を使用していた可能性がありますが、それは動作しません。私はYahoo Pipesの正規表現モジュールでこれをやっています。 PHPの実装と非常によく似ているはずです。

Yahoo Pipesで各試合を個別に使用するにはどうすればよいですか?

答えて

2

&lt;&gt;を別々に交換する方が簡単かもしれません。そうすれば、逆参照を使用する必要がない単純な検索置換になります。

+0

私はそのための2つのパスを行う必要があるでしょうか? 1つは<を変更し、もう1つは>を変更しますか? (ありがとう!) –

+1

それは2つのパスになります。 <と>の文字列を置き換えて、新しい文字列をWebページに挿入してください。 – mlevit

+0

私は、Yahoo Pipesに親しんでいるわけではありませんが、ほとんどの正規表現エンジンは、何らかの並べ替えのすべての機能を置き換えています。あなたは 'replaceAll(" < "、" <")'と 'replaceAll(" > "、"> ")'を持っていなければならないので、2つの操作が必要です。 –

関連する問題