「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > PHP 正規表現でバックスラッシュをエスケープするにはどうすればよいですか?

PHP 正規表現でバックスラッシュをエスケープするにはどうすればよいですか?

2024 年 11 月 17 日に公開
ブラウズ:467

How to Escape Backslashes in PHP Regular Expressions?

PHP 正規表現でのバックスラッシュのエスケープ

PHP 正規表現パターンでバックスラッシュをエスケープするには、3 つのバックスラッシュ (\\ ) または 4 つのバックスラッシュ (\\\\)。どちらのオプションでも一致は成功しますが、解釈と使用法には微妙な違いがあります。

テスト ケース:

次のテスト ケースを考えてみましょう:

// TEST 01: (3 backslashes)
$pattern = "/^[\\\]{1,}$/";
$string = '\\';

// ----- RETURNS A MATCH -----

// TEST 02: (4 backslashes)
$pattern = "/^[\\\\]{1,}$/";
$string = '\\';

// ----- ALSO RETURNS A MATCH -----

どちらの場合も、3 つと 4 つのバックスラッシュを使用してバックスラッシュをエスケープできることを示す一致が返されます。

解釈と使用法:

  • 3 つのバックスラッシュ (\\): 3 つのバックスラッシュを使用する場合、パターンは 1 つのバックスラッシュ (\ ) キャラクター。ただし、パターン内の次の文字もバックスラッシュである場合、3 つのバックスラッシュだけを使用してリテラルのバックスラッシュを照合することはできません。
// Matches a single backslash
preg_match( '/\\\/', '\\' );      // 1

// Fails to match a literal backslash followed by a backslash
preg_match( '/\\\\\s/', '\\s' );   // 0
  • 4 つのバックスラッシュ (\\\\): 一方、4 つのバックスラッシュを使用すると、後続の文字に関係なく、常にリテラルのバックスラッシュと一致します。これは、4 番目のバックスラッシュが 3 番目のバックスラッシュをエスケープし、リテラル文字にするためです。
// Matches a literal backslash followed by any character
preg_match( '/\\\\\s/', '\\s' );   // 1

推奨事項:

これらの観察に基づいて、一致を求めるときは正規表現パターンで常に 4 つのバックスラッシュ (\\\\) を使用することをお勧めします。バックスラッシュ。このアプローチにより、パターン マッチングの一貫性と予測可能性が保証されます。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3