2016-09-12 3 views
0

Я использую PowerGREP найти примеры этих:Как исключить HTML-тег в поиске регулярных выражений

БЛОК 1:

<td class="danish">kat 
<?php audioButton("../../audio/words/dog","dog");?></td> 

Но есть также случаи, когда они среди моих файлы:

БЛОК 2

<td class="danish">kat</td> 
<td><?php audioButton("../../audio/words/dog","dog");?></td> 

Я хочу найти блок 1 только, а не блок 2.

Я попытался с помощью (?!), Как и в

.*<td class(.*?)>(.*)(?!</td>) 
.*<\?php audioButton\("(.*)/.*",".*"\);.*\?></td> 

Могу ли я каким-то образом исключить </td> тег из поиск, так что BLOCK 2 игнорируется?

ответ

1

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

<td[^>]*>\s*(?:.(?!</td>))+\s*<\?php audioButton\("[^"]*/(.+?)","(.*?)"\);.*?\?>.*?</td> с g флаг.

видеть, что это работает здесь: https://regex101.com/r/tI4rL4/1

[EDIT]

Вы также можете увидеть замену dog на cat здесь: https://regex101.com/r/tI4rL4/2

Это не может быть идеальным, так как этот вопрос является немного слишком расплывчато, но это работает. Если вам нужно немного доработать или настроить или вам нужно немного объяснений, вы можете спросить меня!

+0

Hi Antoni. Большое спасибо за помощь :) Думаю, мой вопрос мог быть яснее. Я отредактировал его сейчас, так что, надеюсь, это более понятно. Я не хочу, чтобы он соответствовал каким-либо экземплярам блока 2. – Moogal

+0

Да, это то, что я впервые понял, поэтому, если вы перейдете к ссылке моей демонстрации, она будет соответствовать только блоку 1 'dog' экземпляров, а не 2-го блока' dog' экземпляров. Разве вы этого не хотите? :) – antoni

+0

Да! Это то, что я хочу! Большое спасибо :) – Moogal

 Смежные вопросы

  • Нет связанных вопросов^_^