- ベストアンサー
拡張子の正規表現
emacs や xyzzy で、 設定ファイルの中に、 拡張子の正規表現として、 \\.vbs のような表現がありますが、 ずっと以前から疑問に思っています。 \.vbs なら意味がすぐに分かるのですが、 その前に \ をつける必要性が分かりません。 この \ (私にとりましては余分に見える \ )には どのような意味があるのですか? どなたかお教え願えませんでしょうか? どうぞよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>つまり正規表現関数に渡されるのは2番目の \ 以下の文字列、 >ということでよろしいんでしょうか? はい、そうです。 日本語環境だと円マークですが、海外だとバックスラッシュのことが ほとんどで、バックスラッシュがたくさんあるさまをみて 爪楊枝が並んでいるようだとかいわれたりしています。
その他の回答 (1)
- sakusaker7
- ベストアンサー率62% (800/1280)
Emacs Lisp や xyzzy では、Perlのように正規表現リテラル というものがないので、一端文字列として記述しておいて それを正規表現を解釈する関数に渡します。 このとき通常の文字列と同じようにエスケープの処理が行われます。 このため、 "\.vbs" のように書いてしまうと、正規表現関数に渡されるのは ".vbs" になってしまうのです。 そこで '\' を正規表現関数に渡すために、文字列に対する エスケープ処理をしたときに取り除かれる文を見越して "\\.vbs" のように書くのです。
補足
ご教示ありがとうございます。 エスケープ処理が2段階で行われるということですね。 \\. の最初の \ は2番目の \ を文字としての \ として扱う、 つまり正規表現関数に渡されるのは2番目の \ 以下の文字列、 ということでよろしいんでしょうか?
お礼
ご親切にご回答をいただきまして ありがとうございました。 もやが晴れたような感じ、 おかげですっきりしました。