2009-08-03 76 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>”替换它)我想这个问题是我不能告诉多少场比赛会被发现,以及如何引用每一个。也许在Perl中,我可以使用$ +,但这不起作用。我正在用Yahoo Pipes的正则表达式模块来做这件事。它应该与PHP实现afaik非常相似。

如何在Yahoo Pipes中分别使用每个匹配项?

回答

2

单独更换&lt;&gt;可能会更容易。这样它就成为一个简单的查找替换,不需要使用反向引用。

+0

我需要为做两遍?一个改变< s和另一个> s? (谢谢!) – 2009-08-03 04:18:40