// PHP 5.4.1
// Either three or four \ can be used to match a '\'.
echo preg_match( '/\\\/', '\\' ); // 1
echo preg_match( '/\\\\/', '\\' ); // 1
// Match two backslashes `\\`.
echo preg_match( '/\\\\\\/', '\\\\' ); // Warning: No ending delimiter '/' found
echo preg_match( '/\\\\\\\/', '\\\\' ); // 1
echo preg_match( '/\\\\\\\\/', '\\\\' ); // 1
// Match one backslash using a character class.
echo preg_match( '/[\\]/', '\\' ); // 0
echo preg_match( '/[\\\]/', '\\' ); // 1
echo preg_match( '/[\\\\]/', '\\' ); // 1
3 つのバックスラッシュを使用して a に一致させる場合'\'
、以下のパターンは一致 a の'\'
後に an が続くものとして解釈され's'
ます。
echo preg_match( '/\\\\s/', '\\ ' ); // 0
echo preg_match( '/\\\\s/', '\\s' ); // 1
4 つのバックスラッシュを使用して a に一致させる場合'\'
、以下のパターンは、一致する a の'\'
後にスペース文字が続くものとして解釈されます。
echo preg_match( '/\\\\\s/', '\\ ' ); // 1
echo preg_match( '/\\\\\s/', '\\s' ); // 0
文字クラス内の場合も同様です。
echo preg_match( '/[\\\\s]/', ' ' ); // 0
echo preg_match( '/[\\\\\s]/', ' ' ); // 1
上記の結果は、文字列を一重引用符ではなく二重引用符で囲んでも影響を受けません。
結論:
括弧付き文字クラスの内部または外部に関係なく'\\\'
、パターン内の次の文字もバックスラッシュでない限り、3 つのバックスラッシュを使用してリテラルのバックスラッシュを照合できます。その場合、リテラルのバックスラッシュは 4 つのバックスラッシュを使用して照合する必要があります。
推奨事項:バックスラッシュを照合する場合は、正規表現パターンで
常に 4 つのバックスラッシュを使用してください。'\\\\'
エスケープ シーケンス。