1309649 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

さすらいのプログラマ

さすらいのプログラマ

PR

Keyword Search

▼キーワード検索

Profile

xyzzy_user

xyzzy_user

Calendar

Comments

AllenRaf@ fig Dib <a href="https://privatespb.com…
Rolandodeamp@ surry alubs <a href="https://blyadsk.ru/&qu…
Victornuple@ wic Exhax <a href="https://sosamba196.ru/…
avenue17@ Sains Sig круть...инетересно было прочесть
Davidabeds@ dog Slild Надеюсь, Вы найдёте верное решение.

Freepage List

2007/10/17
XML
カテゴリ:xyzzy
バッファ内を検索するには、
(scan-buffer "[0-9]+" :regexp t)
と、scan-bufferを使えばよい。regexpにtを与えると正規表現による検索となる。

文字列内を正規表現で検索するには、
(string-match "[0-9]+" "abc98 cc")
と、string-matchを使えばよい。
一致した位置を返してくれる。

一致した内容を取得するには、
(match-string 0)
を使う。0は一致した内容全体で、参照は1~9を使う。

気をつけなければいけないのは、エスケープ文字だ。
C:\WINDOWS\SYSTEM32\\([^.]+\).dllという検索をしたいときは、
lisp上では、エスケープ文字(\)と解釈される部分に注意が必要だ。
C:\\WINDOWS\\SYSTEM32\\\([^.]+\).dllとすればよさそうだが、うまく動かない。
C:\\\\WINDOWS\\\\SYSTEM32\\\\\\([^.]+\\).dllとするとうまくいく。
エスケープ文字でないパスの区切りを表すために、\\とするが、2度解釈されるようなので
さらにエスケープする必要があるようだ。
したがって、「\」は「\\\\」となる。グルーピングの「\(」は「\\(」となる。

scratchで以下を試してみればわかる。

(string-match
"C:\\\\WINDOWS\\\\SYSTEM32\\\\\\([^.]+\\)\\.dll"
"COPY C:\\WINDOWS\\SYSTEM32\\USER32.dll C:\Backup")

4が返されるだろう。文字列としてエスケープを解釈し、さらに、string-matchの評価の際にエスケープを解釈していると思われる。






Last updated  2007/10/17 09:11:13 AM
コメント(0) | コメントを書く
[xyzzy] カテゴリの最新記事



© Rakuten Group, Inc.