最初は、正規表現でこれを行うのは非常に簡単だと思っていましたが、間違っていることがわかりました。
正規表現でこれを行う簡単で信頼できる方法を見つけることができないようです。
引用符で囲まれていない FOO のすべてのインスタンスに一致させたい:
フー
xFOO
フーイ
「ふぅ
フー」
ただし、「FOO」ではありません
つまり、FOO を検索したいのですが、それが引用符で囲まれていない場合に限られます。これが理にかなっていることを願っています。:-)
正規表現でルックアラウンドを使用します。
(?:(?<!")FOO|FOO(?!"))
$s = 'FOO"';
if (preg_match('/(?:(?<!")FOO|FOO(?!"))/', $s, $m))
print_r($m);
これは、次FOO
が続いていない場合に一致し"
ます。OR が前にない場合は FOO に一致します。"
つまり、FOO が二重引用符で囲まれている場合にのみ FOO と一致しません。