1. ホーム
  2. Web プログラミング
  3. 正規表現

正規表現における2つのバックスラッシュのマッチングルール

2022-01-15 16:39:34

正規表現rawのマッチングルール

画像

これは勉強で得た例ですが、最初の式はnoneにマッチするので、なぜマッチしないのかと考えたところ、˶‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾????とエスケープするとして、noneではなく、????にもマッチするはずです。
これを検証するために、次のような実験をしました。

では、なぜそのような結果になるのでしょうか。正規表現では、調べる必要のある文字列は2回エスケープされ、最初に入力される文字列は最初のレベルで変換されます。 \\t --> \t . その後、reパーサーに渡され、2段階目の変換が行われる、 \t --> tabキー。そして、"indy" --> "two backslashes" にマッチする文字列は、"one backslash" になります("indy" の前の文字列が "indy "をエスケープするので、2つの "\" は "one \" になります)。そうすると、今度は"୧⃛(๑⃙⃘◡̈๑⃙⃘) "となり、そのまま1つのTabキーになり、一致する。 (笑)
生が現れると、次のようになります。

マッチングできたものがアンマッチになる。なぜか?なぜなら、rawで行われていたはずの第一レベルの変換はもはや存在せず、reパーサーの第二レベルの変換に直接行くからです。
例えば \평평→1回だけ変換されます。しかし、マッチングが必要な文字列は、タブ1つだけ前の変換を受けたままなので、マッチングができません。
以上が私の理解ですが、もし疑問があれば、プライベートメッセージで質問してください。これは、私が規則性のあるルールで理解していることです。

今回は正規表現における2つのバックスラッシュのマッチングルールについて紹介しましたが、より関連する正規表現のバックスラッシュの内容はBinaryDevelopの過去記事を検索するか、以下の関連記事を引き続き閲覧してください!今後ともBinaryDevelopをよろしくお願いします。