正则表达式:查找并替换每个匹配项

时间:2009-08-03 04:06:28

标签: regex yahoo-pipes

我需要更改字符串中某些内容的元素,将内容保留为原样。我正在使用正则表达式,但是当我使用位置参数($ 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>.

我正在使用以下正则表达式:

\x26lt;(.*?)\x26gt;

(全局,并将其替换为“<$1>”)

我想问题是我不知道会找到多少匹配,以及如何引用每一个匹配。也许在Perl中我可以使用$ +,但这不起作用。我正在使用Yahoo Pipes的正则表达式模块执行此操作。它应该与PHP实现非常类似,afaik。

如何在Yahoo Pipes中单独使用每个匹配?

2 个答案:

答案 0 :(得分:3)

单独替换&lt;&gt;可能更容易。这样它就变成了一个简单的find-replace,不需要使用反向引用。

答案 1 :(得分:0)

如果您选中g复选框,则可以执行单个操作,如此屏幕截图中所示...: screenshot
(来源:aleax.it