Проблема обратного слеша в PHP

Обратный слеш является спецсимволом PHP. Это значит, что в строке, если мы хотим, чтобы слеш обозначал сам себя, мы должны его удвоить:

<?php $str = '\\ \\\\ \\\\\\'; // на самом деле строка '\ \\ \\\' ?>

Обратный слеш также является и спецсимволом регулярок. Это значит, что внутри регулярки, чтобы слеш обозначал сам себя, его нужно написать аж четыре раза:

<?php echo preg_replace('#\\\\#', '!', '\\ \\\\ \\\\\\'); // выведет '! ! !!' ?>

Давайте теперь напишем регулярку, в которой шаблон поиска будет такой: обратный слеш один или более раз В таком случае мы напишем оператор + аж для 4 символов перед ним без группировки:

<?php echo preg_replace('#\\\\+#', '!', '\\ \\\\ \\\\\\'); //выведет '! ! !' ?>

Дана строка:

<?php $str = 'a\\b c\\d e\\f'; ?>

Найдите в этой строке все подстроки по шаблону буква, обратный слеш, буква.

Дана строка:

<?php $str = 'a\\b c\\\\d e\\\\\\f'; ?>

Найдите в этой строке все подстроки по шаблону буква, обратный слеш любое количество раз, буква.