如何在正则表达式搜索中排除 HTML 标签
How to exclude an HTML tag in regex search
我正在使用 powerGrep 查找这些实例:
BLOCK 1:
<td class="danish">kat
<?php audioButton("../../audio/words/dog","dog");?></td>
但我的文件中也有这样的实例:
BLOCK 2
<td class="danish">kat</td>
<td><?php audioButton("../../audio/words/dog","dog");?></td>
我只想找到 BLOCK 1,而不是 BLOCK 2。
我试过使用 (?!),如
.*<td class(.*?)>(.*)(?!</td>)
.*<\?php audioButton\("(.*)/.*",".*"\);.*\?></td>
我能否以某种方式从搜索中排除 </td>
标记,从而忽略 BLOCK 2?
我不确定你为什么真的只想匹配第一个单元格标签,但要执行此操作你可以尝试:
<td[^>]*>\s*(?:.(?!</td>))+\s*<\?php audioButton\("[^"]*/(.+?)","(.*?)"\);.*?\?>.*?</td>
带有 g
标志。
看到它在这里工作:https://regex101.com/r/tI4rL4/1
[编辑]
您还可以在此处查看 dog
到 cat
的替换:https://regex101.com/r/tI4rL4/2
它可能并不完美,因为这个问题有点太模糊了,但它确实有效。如果您需要改进或调整或需要一些解释,您可以问我!
我正在使用 powerGrep 查找这些实例:
BLOCK 1:
<td class="danish">kat
<?php audioButton("../../audio/words/dog","dog");?></td>
但我的文件中也有这样的实例:
BLOCK 2
<td class="danish">kat</td>
<td><?php audioButton("../../audio/words/dog","dog");?></td>
我只想找到 BLOCK 1,而不是 BLOCK 2。
我试过使用 (?!),如
.*<td class(.*?)>(.*)(?!</td>)
.*<\?php audioButton\("(.*)/.*",".*"\);.*\?></td>
我能否以某种方式从搜索中排除 </td>
标记,从而忽略 BLOCK 2?
我不确定你为什么真的只想匹配第一个单元格标签,但要执行此操作你可以尝试:
<td[^>]*>\s*(?:.(?!</td>))+\s*<\?php audioButton\("[^"]*/(.+?)","(.*?)"\);.*?\?>.*?</td>
带有 g
标志。
看到它在这里工作:https://regex101.com/r/tI4rL4/1
[编辑]
您还可以在此处查看 dog
到 cat
的替换:https://regex101.com/r/tI4rL4/2
它可能并不完美,因为这个问题有点太模糊了,但它确实有效。如果您需要改进或调整或需要一些解释,您可以问我!