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

さすらいのプログラマ

さすらいのプログラマ

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

PR

Keyword Search

▼キーワード検索

Profile

xyzzy_user

xyzzy_user

Calendar

Comments

CarmineFub@ agorb lup <a href="https://sosamba-spb1.r…
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 круть...инетересно было прочесть

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.
X