我执行这个:
$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
这个想法是在字符串(不包含管道)之后添加“||Read”,如果它不存在。那么为什么第一个 RegEx 中的 * 只消耗“tes”?
第二个正则表达式有效,因为第一个 * 使用“tes”,而断言中的第二个 * 匹配“t||” .