Ретроспективные (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) проверки" вам может быть также интересно: