php を使用して、一致した部分の直後の部分に特定の文字が含まれていないかどうかによって、文字列内の何かを検出したいと考えています。先読みの否定的なアサーションを使用する必要があるかもしれないと思いますが、期待どおりに機能していないのでわかりません。たとえば、次のようになります。
$string = 'test somerandomURL><b>apple</b> peach orange';
<b>apple</b>
最初までのすべてを検出する式が欲しい >最初の直後に続かない限り>
私は試した
if(preg_match("/test(.*)>(?!<b>apple<\/b>)(.*)/i",$string)){
echo 'true since <b>apple</b> does not follow > in string';
}else{
echo 'false since <b>apple</b> follows > in string';
}
> の後に文字列が含まれている場合、<b>apple</b>
予想どおり必要に応じて false を返します<b>peach</b>
が、代わりに > の後に文字列を変更すると、代わりに<b>apple</b>
false が返され、true を返す必要があります。太字のタグがなければ、期待どおりに機能するようです。私が間違っていることはありますか?