私はこれを実行します:
$string = preg_replace('/^([^\|]*)(?!\|\|Read)/','$1||Read',"test||Read");
echo "$string<br>";
$string = preg_replace('/^([^\|]*)(?!.*Read)/','$1||Read',"test||Read");
echo "$string<br>";
そして私はこれを手に入れます:
tes||Readt||Read
test||Read
文字列(パイプを含まない)が存在しない場合は、文字列の後に「||読み取り」を追加するという考え方です。では、なぜ最初の正規表現の*は「tes」だけを消費するのでしょうか。
2番目の正規表現は機能します。これは、アサーションの最初の*が「tes」を消費し、2番目の*が「t||」と一致するためです。。