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

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

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

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

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

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

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

Дана строка:

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

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

Задание 2

Дана строка:

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

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