regex PHP正则表达式选择一个标签,同时用转义符排除另一个标签[duplicate]

qyyhg6bp  于 2023-04-22  发布在  PHP
关注(0)|答案(1)|浏览(120)

此问题已在此处有答案

regex - ignore escaped chars within quotation marks(2个答案)
Regex for escaping single quotes which are not already escaped(1个答案)
Regex to replace non escaped Quotes(4个答案)
php regex matching a characters that is not preceded by a specific character [duplicate](1个答案)
Regex match unescaped quotes(2个答案)
昨天关门了。
我觉得我应该能够找到这个问题的答案,但我似乎不能弄清楚。我在一个php文件中有一个基本的字符串,我正在用正则表达式搜索。搜索工作很好,但我不知道如何排除基于转义字符的某些标签。
这是我的搜索字符串

@section('content')

    \@section('test')
    \@endsection

@endsection

我试图选择@section(“X”),除非它先用“\”转义。因此,第二次出现时,它说“@section('test')”将不匹配,因为转义字符。
下面是我的正则表达式,它可以选择所有的事件。

preg_match("/\@section\(\'\S*\'\)/i", $file_data, $start_section_match);

我想我是在正确的轨道上使用的“^”符号,但我不是很确定.我知道这可以做一点php的工作,但我只是好奇,如果有一种方法来做,只是正则表达式.谢谢!

wribegjk

wribegjk1#

这个应该能帮你。。

preg_match("/(?<!\\\\)@section\('\S*'\)/i", $file_data, $start_section_match);

这是一个负向后查找,如果前一个字符不是反斜杠。它实际上不匹配任何东西,它只是检查它。

相关问题