Ретроспективные (look-behind) проверки
Look-behind (ретроспективные) проверки позволяют проверять выражение, но не являются частью выражения (т.е. не будут заменены в preg_replace, например).
Допустим, надо заменить все буквы a, перед которыми идет b:
$res = preg_replace('/(?<=b)a/', '', 'ababaacba'); //$res: 'abbacb';
Если нужно, удалить a, перед которым любой символ, кроме b, нужно поменять только один знак:
$res = preg_replace('/(?<!b)a/', '', 'ababaacba'); //$res: 'babacba';
31.07.2019
Помимо "Ретроспективные (look-behind) проверки" вам может быть также интересно: