2011年2月14日月曜日

Emacs正規表現置換でのLispコード実行

EmacsWiki: Replace Regexp にて、例が十数個紹介されている。

覚えておくべき点は、マッチした部分を文字列とみなす場合は "\&, \0, \1, \2, ..." を、数とみなす場合は "\#&, \#0, \#1, \#2, ..." を使うこと。

1. 文字列とみなす例: Capitalize words
;;置換前
foo
bar
baz
;;置換後
Foo
Bar
Baz
置換のコマンド:
M-x replace-regexp
Replace regexp: \(\w+\)
Replace regexp with: \,(capitalize \1)
2. 数とみなす例: Promote header tags in HTML
;;置換前
<h1>foo</h1>
<h2>bar</h2>
<h3>baz</h3>
;;置換後
<h2>foo</h2>
<h3>bar</h3>
<h4>baz</h4>
置換のコマンド:
M-x replace-regexp
Replace regexp: <\(/?\)h\([0-9]\)>
Replace regexp with: <\1h\,(1+ \#2)>

0 件のコメント:

コメントを投稿