新Emacsの強力な置換機能を使いこなす
後藤大地(オングス)
2007/07/01 00:00
6年ぶりの大きなアップデートとなったEmacs 22.1、CVS先端の開発バージョンを使っているユーザは、なんとなく見過ごしてしまっているかもしれないが、新しい機能には便利なものが多い。ここでは、特に強化された置換機能について取り上げる。使いこなせば強力なので、是非使ってみて欲しい。
もちろん、置換対象と置換結果を指定する。異なるのは結果の指定でelispによる関数が組み込まれている点だ。
対象の指定で使っている表記はこれまでのreplace-regexpの範疇で理解できるだろう。( )がグルーピングの指定、一致した対象は置換後文字列の指定で順次\1 \2 \3、と指定していく。
リスト3 一致対象の指定
Query replace regexp: \([0-9]+\)\([ ]+\)\([0-9]+\)
置換後の指定で関数を組み込んである。「(if (= (string-to-int \1) (string-to-int \3)) "=" (if (< (string-to-int \1) (string-to-int \3)) "<" ">"))」がそれだ。わかりやすくフォーマットするとリスト5の様になる。一致した対象を比較してそれぞれ"<" "=" ">"を出力するという処理を行っている。
リスト4 置換後文字列の指定
Query replace regexp with: \1 \,(if (= (string-to-int \1) (string-to-int \3)) "=" (if (< (string-to-int \1) (string-to-int \3)) "<" ">")) \3
リスト5 replace-regexpで使ったLispコード
(if
(= (string-to-int \1) (string-to-int \3)) "="
(if
(< (string-to-int \1) (string-to-int \3)) "<"
">"))
置換後の指定で「\,( ... )」という表記があることに注目してほしい。「\,」が「それ以降の処理はLisp関数である」ことを表すものだ。これで、正規表現のなかでの関数の使い方がわかっていただけたと思う。
- 昨日のトップ記事
- 3日前
- 4日前
- 7日前
- 8日前
- ホワイトペーパー
- 企画特集
REAL IT COOL PROJECT
国内シェアNo1
Green Enterprise
今が選びどき!百花繚乱スマートフォン
NTTComのSaaS型アウトソーシングをレポート
Techno Exchange
価格から質へと変わるアウトソーシング市場
RSA enVision
仮想化環境に適したサーバブレード新登場!
情報大洪水時代を生き抜くソリューション
かつてのERPは死んだ--
仲間と情報を共有・公開する楽しみ方は?
局所冷却に注目。
ZDNet Japan ログ管理
グリーンデータセンターの新潮流
- MicrosoftもOracleもDWH市場に参入!
- リバーベッドのSteelheadアプライアンス
- エンタープライズサーチ特集!
- データバックアップで事業継続力を向上!
- なぜ、ERP 導入は敷居が高いのか?
- 話題のタグ
Microsoft
プロジェクト管理
デザイン
プログラミング言語
Safari
Internet Explorer
iPod touch
Off Topic
モバイル
ソフトウェア開発
UI
ユーザーインタフェース
小技
リファレンス
PHP
Opera
Firefox 3
Apple
データベース
オープンソース
iPhone
RIA
Tips
Webサービス
Webデザイン
Java
Ajax
Linux
Windows
Adobe
Firefox
ブラウザ
Mozilla
脆弱性
仮想化ソフトウェア
Mac OS X
JavaScript
iPhone 3G
仮想化
入門
携帯電話機
レビュー
SOA
Google
Flash
Database
開発環境
HTML
server
CSS
話題のタグを見る »
フォトレポート:分解、「Apple IIc」第2弾--モニタの内部に迫る
ボックスレイアウトの方向をコントロールする
MS、ストリートビュー問題で一言「プライバシーの問題は事後対処が困難」
あなたの知らないPKI(1)--PKIのコア要素/公開鍵暗号