- ベストアンサー
拡張子の正規表現
emacs や xyzzy で、 設定ファイルの中に、 拡張子の正規表現として、 \\.vbs のような表現がありますが、 ずっと以前から疑問に思っています。 \.vbs なら意味がすぐに分かるのですが、 その前に \ をつける必要性が分かりません。 この \ (私にとりましては余分に見える \ )には どのような意味があるのですか? どなたかお教え願えませんでしょうか? どうぞよろしくお願いします。
- nonolamy
- お礼率98% (53/54)
- その他(プログラミング・開発)
- 回答数2
- ありがとう数1
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>つまり正規表現関数に渡されるのは2番目の \ 以下の文字列、 >ということでよろしいんでしょうか? はい、そうです。 日本語環境だと円マークですが、海外だとバックスラッシュのことが ほとんどで、バックスラッシュがたくさんあるさまをみて 爪楊枝が並んでいるようだとかいわれたりしています。
その他の回答 (1)
- sakusaker7
- ベストアンサー率62% (800/1280)
Emacs Lisp や xyzzy では、Perlのように正規表現リテラル というものがないので、一端文字列として記述しておいて それを正規表現を解釈する関数に渡します。 このとき通常の文字列と同じようにエスケープの処理が行われます。 このため、 "\.vbs" のように書いてしまうと、正規表現関数に渡されるのは ".vbs" になってしまうのです。 そこで '\' を正規表現関数に渡すために、文字列に対する エスケープ処理をしたときに取り除かれる文を見越して "\\.vbs" のように書くのです。
補足
ご教示ありがとうございます。 エスケープ処理が2段階で行われるということですね。 \\. の最初の \ は2番目の \ を文字としての \ として扱う、 つまり正規表現関数に渡されるのは2番目の \ 以下の文字列、 ということでよろしいんでしょうか?
関連するQ&A
- 正規表現で文字を抜き出したい
-----------------------ファイルの中身----------------------------- 8 個のファイル x,Xxx,xxx バイト ファイルの総数: 12400 個のファイル 419,000 バイト 8000 個のディレクトリ 280,284,000 バイトの空き領域 XXXXXXXX ------------------------------------------------------------------ 上記のものが一つのファイルの中にいくつか存在し、 その中の『ファイル総数:』~『バイトの空き領域』を 正規表現を使用して、VBSで抜き出したいと思っています。、 "ファイルの総数:[^バイトの空き領域]*バイトの空き領域(?=\r)" という正規表現を作成したのですが、うまく動作しません。 どのような正規表現を使用したら良いでしょうか。 どなたか、上記の抜き出す文言を示す正規表現をお教えください。
- ベストアンサー
- Visual Basic
- AS3.0 外部ファイルの拡張子を正規表現で調べたい
AS3.0 外部ファイルの拡張子を正規表現で調べたい 外部jpgや外部swfを読み込む際、拡張子を正規表現で調べる方法はありますか? また、substrなどを使うより早いんでしょうか。
- ベストアンサー
- Flash
- 正規表現の質問
お世話になります。 PHPでの正規表現に関する質問です。 使っている教本の中に、次のようなコードがあります。 $files = new FilesystemIterator('.'); $files = new RegexIterator($files, '/\.(?:txt|csv)$/i'); foreach ($files as $file) { echo $file->getRealPath() . '<br>'; } これは、スクリプトと同じフォルダーにあるファイルの中で、.txt と .csv の拡張子のついたものだけを選択して表示するために、正規表現を使っているのですが、この中の ?: という部分の意味が分かりません。いろいろと正規表現に関する記事をネットで調べてみましたが、: コロンをメタ文字として扱っているものは見たことがありません。この ?: の役割を教えてください。お願いします。 ちなみに、これを取り去ってもちゃんと期待通りの結果が出ます。
- ベストアンサー
- PHP
- この正規表現のパターンについて
この正規表現のパターンについての意味を教えてほしい。 【疑問】 $pattern ="/((?:.*?<p>.*?<\/p>){3}).*/mis"; ↓の中の (?:.*?<p>.*?<\/p>){3} ↓の中の 先頭の「 ( 」の次の、「 ?: 」の意味がわかりません。 これは、どのような意味があるのでしょうか? 【今までの流れ】 あることが知りたくて質問しました。 そのページは、こちら http://okwave.jp/qa/q7300031.html 教えていただいた、正規表現で、「出来た、出来た」と喜んで、ベストアンサーとして質問を締め切りました。 正規表現って、言語などの環境により、多少の違いがありますよね? そこで、phpの正規表現を勉強しようと、その正規表現を見ました。 しかし、なぜ、これらの文字があるのかわかりません。 よろしくお願いします。
- ベストアンサー
- PHP
- VB2010の正規表現
VB2010の正規表現についての質問です。 ファイル名に複数のドット(ピリオド)が含まれる時や、複数の拡張子がある時でも、 一番最後にある拡張子だけを取り出したいのです。 System.Text.RegularExpressions.Regex("正規表現") で正規表現を指定していますが、 例えば、『T.M.Revolution.m3u』の場合は、『.m3u』だけを取り出したいので、 ("[.].*$") とすると、マッチする部分が『.M.Revolution.m3u』となる為、 ("([.].*){1}$") に、試しに変更してみましたが、失敗してしまいました。 知っている方、 『上記の書き方だと何故ダメなのか』 と、 『この場合の正しい正規表現』 を教えていただけませんか? あと、正規表現ではない代替案などが有れば、是非それも教えて頂きたいです。 よろしくお願いします。
- ベストアンサー
- Visual Basic
- |。ってなんですか? 正規表現
正規表現の学習中です。読んでいる本の中に次の式がありました。 (?<=^|。)[^。]+。 日本語の文章の中から一文を抽出するための正規表現です。 。以外の文字がダーッと連なった後に。が来る文字列 とのことです。 [^。]は。以外の文字 +はそれが1個以上ある ですから [^。]+ は 。以外の文字が1個以上ある という意味です。 その後に。が付きますから、 [^。]+。 だけで 。以外の文字がダーッと連なった後に。が来る文字列 ということになります。 では (?<=^|。) の意味は何でしょう。 (?<=なんたら) は後方参照を意味しますから、 ^|。 のすぐ後に [^。]+ が続くと言いたいのでしょうか。 だとすると ^|。 が問題です。 ^もしくは。 という意味なら、^は正規表現で記号として使われている文字ですから、 \^|。 と表現されそうなものです。 それに、。は文末でしか利用されない文字ですから、これに注目して検索を行うというのは理解できますが、^は日本語でなんら特徴を持つ文字ではありません。 ^もしくは。 という理解は間違いでしょう。 それでは^を記号として考えるとして、その前後を[]で囲んでいないから、この^は文字列の先頭を表すのでしょうか。そうすると件の正規表現は 先頭の|。のすぐ後から。以外の文字が連なった後に。が来る文字列 という意味になります。日本語の一文を抽出する正規表現という解説にかなり近づいてはいます。 しかし |。 とは一体何? |はorを意味する記号ですが、 何とか or 。 という意味でしょうか。 でも「何とか」は「何とか」なりに何か文字表現がなされていても良さそうですし、それに 先頭の「何とか」または。のすぐ後から・・・ という解釈は意味不明。 |。 はどのように解釈すべきなのでしょうか。 お手数をお掛けします。
- ベストアンサー
- Perl
- xyzzyで拡張子がcgiやpl, pmのファイルを開くとタブが効きません。
xyzzyで拡張子がcgiやpl, pmのファイルを編集しているのですが、そのファイルを開くとタブが効きません。 新規で開いたファイルはタブが効きますが、xyzzyでどのように設定すればよいのでしょうか?
- ベストアンサー
- その他(プログラミング・開発)
お礼
ご親切にご回答をいただきまして ありがとうございました。 もやが晴れたような感じ、 おかげですっきりしました。