在模式加上下一行之后查找

Find after pattern plus next line

在包含一些 PHP 的 HTML 文件中

<table>
    <tbody>
        <tr>
            <td>td1</td>
            <td>td2</td>
        </tr>
        <tr>
            <td colspan="3">
                <?php echo 'something' ?>
            </td>
            <td>
                <?php echo echo 'something' ?>
            </td>
            <td>
                <?php echo 'something' ?>
            </td>
        </tr>
    </tbody>
</table>

我想找到 <td ...> + 下一行 之后的所有 <?php

(这​​里不是td1也不是td2)

方法:

(?s)(<td.*?>)+(\n)... 也匹配 <td>td1</td><td>td2</td>

(?s)(<td.*?>)之后是什么?

要删除 <?php...?>,您可以将 (<td[^>]*>)\s*<\?php.*?\?> 替换为 </code>:</p> <p><a href="https://i.stack.imgur.com/IHAfb.png" rel="nofollow noreferrer"><WBIMG:2999305-1.png></a></p> <p>解释:</p> <pre><code>(<td[^>]*>) # store in what you want to retrieve \s* # also match what you want to remove <\?php.*?\?> # the php content

然后当替换为 </code> 时,它将仅删除 <code>\s*<\?php.*?\?>,这取决于 <td>

希望对您有所帮助。