2015-03-10 3 views
0

У меня есть небольшая проблема, и не находят решения :(Ленивый квантор и модификатор/с

Я пытаюсь заменить этот текст:

<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

Заранее благодарен!

Питер

+0

Как вы новичок в StackOverflow, позвольте мне поделиться этим [классический пост] (http://stackoverflow.com/a/1732454/989121) с вами. TLDNR: не используйте регулярные выражения для работы html. – georg

ответ

0

Просто поверните между ними .+ к .+?, так что он будет делать, не жадный матч или иначе бы жадностью MATCH столько символов, сколько насколько это возможно.

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

DEMO

+0

Спасибо, это прекрасно! – peter

0

использовать глобальную г модификатора, чтобы получить все вхождения