【问题标题】:How to exclude an HTML tag in regex search如何在正则表达式搜索中排除 HTML 标记
【发布时间】:2017-01-20 11:38:56
【问题描述】:

我正在使用 powerGrep 来查找这些实例:

第 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>

我只想找到 BLOCK 1,而不是 BLOCK 2。

我尝试过使用 (?!),如

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

我能否以某种方式从搜索中排除 &lt;/td&gt; 标记,从而忽略 BLOCK 2?

【问题讨论】:

    标签: regex regex-lookarounds powergrep


    【解决方案1】:

    我不确定您为什么真的只想匹配第一个单元格标记,但要执行此操作,您可以尝试:

    &lt;td[^&gt;]*&gt;\s*(?:.(?!&lt;/td&gt;))+\s*&lt;\?php audioButton\("[^"]*/(.+?)","(.*?)"\);.*?\?&gt;.*?&lt;/td&gt; 带有g 标志。

    在这里看到它的工作:https://regex101.com/r/tI4rL4/1

    [编辑]

    您还可以在此处查看 dog 到 cat 的替换:https://regex101.com/r/tI4rL4/2

    它可能并不完美,因为这个问题有点太模糊了,但它确实有效。如果需要细化或调整或需要解释的可以问我!

    【讨论】:

    • 嗨安东尼。非常感谢您的帮助:) 我想我的问题可能更清楚。我现在已经编辑了它,所以希望它更容易理解。我不希望它匹配 Block 2 的任何实例。
    • 是的,这是我最初理解的,所以如果你转到我的演示链接,它只匹配块 1 dog 实例而不匹配块 2 dog 实例。这不是你想要的吗? :)
    • 是的!这就是我想要的!非常感谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    • 1970-01-01
    • 2018-06-22
    • 1970-01-01
    相关资源
    最近更新 更多