PHPにおけるバックスラッシュの問題

バックスラッシュはPHPの特殊文字です。 これは、文字列内でスラッシュがそれ自体を表すようにしたい場合、 それを倍にする必要があることを意味します:

php<?php
  $str = '\\ \\\\ \\\\\\'; // 実際の文字列は '\ \\ \\\'
?>

バックスラッシュはまた、正規表現の特殊文字でもあります。 これは、正規表現内でスラッシュがそれ自体を表すようにするには、 それをなんと4回書く必要があることを意味します:

php<?php
  echo preg_replace('#\\\\#', '!', '\\ \\\\ \\\\\\'); // '! ! !!'を出力
?>

では、検索パターンがバックスラッシュが1回以上という正規表現を書いてみましょう。 その場合、グループ化なしでその前の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';
?>

この文字列で、文字、バックスラッシュが任意の回数、文字というパターンに一致するすべての部分文字列を見つけてください。