正規表現における2つのバックスラッシュのマッチングルール
正規表現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をよろしくお願いします。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン