延迟量词和/ s修饰符

时间:2015-03-10 10:53:53

标签: regex pcre

我有一点问题,找不到任何解决方案:(

我尝试替换此文:

<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td width="25%"><a href="http://www.test.com/myfile.pdf?min" target="_blank">Menus 18 €</a></div></td>
            <td width="25%"><a href="http://www.test.com/myfile.pdf?min" target="_blank">Menus 24 et 26 €</a></div></td>
            <td width="25%"><a href="http://www.test.com/myfile.pdf?min" target="_blank">Menus 30 et 37 € </a></div></td>
            <td width="25%"><a href="http://www.test.com/myfile.pdf?min">La Carte détaillée&nbsp;<br>
            (Entrées - Viandes - Poissons)</a></td>
        </tr>
    </tbody>
</table>

这个正则表达式:

/<a.*?href=\"(.+.pdf\?min)\".*?>(.*?)<\/a>/s

但是,不是将每个链接都替换为ok,而是仅替换一次。我以为贪婪的量词。*?可以做到但不是......

尝试:https://regex101.com/r/iF7dV0/1

提前致谢!

彼得

2 个答案:

答案 0 :(得分:0)

使用全局g修饰符来获取每次出现

答案 1 :(得分:0)

只需将中间位置.+转换为.+?,这样就可以进行非贪婪的匹配,否则会尽可能地贪婪匹配多个字符。

<a.*?href=\"(.+?.pdf\?min)\".*?>(.*?)<\/a>
               ^

DEMO