代码之家  ›  专栏  ›  技术社区  ›  Felipe Hoffa

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

  •  1
  • Felipe Hoffa  · 技术社区  · 17 年前

    我需要更改字符串中围绕某些内容的元素,保持内容不变。我是用正则表达式来做的,但是当我用位置参数($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>.
    

    我正在使用以下regex:

    \x26lt;(.*?)\x26gt;
    

    (在全球范围内,并将其替换为“ <$1> “”

    我想问题是我不知道会找到多少个匹配项,以及如何引用每个匹配项。也许在Perl中,我可以使用$+,但这不起作用。我用雅虎管道的regex模块来做这个。它应该非常类似于php implemenations,afaik。

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

    2 回复  |  直到 17 年前
        1
  •  2
  •   Ben S    17 年前

    可能更容易替换 &lt; 以及 &gt; 独立地。这样它就变成了一个简单的查找替换,不需要使用返回引用。

        2
  •  0
  •   Alex Martelli    17 年前

    如果检查 g 复选框,就像在这个屏幕截图中一样… screenshot http://www.aleax.it/Picture%201.png