説明
この正規表現は、指定されたテキストの各行を検証して、単一行の文字列 milk の前に文字列 {aa, bb, cc, dd} がないことを確認します。その後、一致する行が返されます。注: OP の例は、一致した「単語」が単なる文字列であり、空白と単語の境界が重要ではないことを示しています。
^(?!.*?(?:AA|BB|CC|DD).*?milk).*
^
この一致を行の先頭に固定します
(?!
否定的な先読みを開始します。コンテンツが正常に一致した場合、失敗します
.*?(?:AA|BB|CC|DD).*?milk
aa bb cc dd の後に文字列 milk が続く文字列を探します
)
先読みを終了する
.*
文全体に一致
PHP コード例:
入力テキスト
AA went to the store and bought some milk
BBCCDDmilk
I went to the store and bought some milk
Aardvarks like milk
コード
<?php
$sourcestring="your source string";
preg_match_all('/^(?!.*?(?:AA|BB|CC|DD).*?milk).*/im',$sourcestring,$matches);
echo "<pre>".print_r($matches,true);
?>
マッチ
$matches Array:
(
[0] => Array
(
[0] => I went to the store and bought some milk
)
)