• ベストアンサー

拡張子の正規表現

emacs や xyzzy で、 設定ファイルの中に、 拡張子の正規表現として、  \\.vbs のような表現がありますが、 ずっと以前から疑問に思っています。  \.vbs なら意味がすぐに分かるのですが、 その前に \ をつける必要性が分かりません。 この \ (私にとりましては余分に見える \ )には どのような意味があるのですか? どなたかお教え願えませんでしょうか? どうぞよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

>つまり正規表現関数に渡されるのは2番目の \ 以下の文字列、 >ということでよろしいんでしょうか? はい、そうです。 日本語環境だと円マークですが、海外だとバックスラッシュのことが ほとんどで、バックスラッシュがたくさんあるさまをみて 爪楊枝が並んでいるようだとかいわれたりしています。

nonolamy
質問者

お礼

ご親切にご回答をいただきまして ありがとうございました。 もやが晴れたような感じ、 おかげですっきりしました。

その他の回答 (1)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

Emacs Lisp や xyzzy では、Perlのように正規表現リテラル というものがないので、一端文字列として記述しておいて それを正規表現を解釈する関数に渡します。 このとき通常の文字列と同じようにエスケープの処理が行われます。 このため、 "\.vbs" のように書いてしまうと、正規表現関数に渡されるのは ".vbs" になってしまうのです。 そこで '\' を正規表現関数に渡すために、文字列に対する エスケープ処理をしたときに取り除かれる文を見越して "\\.vbs" のように書くのです。

nonolamy
質問者

補足

ご教示ありがとうございます。 エスケープ処理が2段階で行われるということですね。 \\. の最初の \ は2番目の \ を文字としての \ として扱う、 つまり正規表現関数に渡されるのは2番目の \ 以下の文字列、 ということでよろしいんでしょうか?

関連するQ&A