新Emacsの強力な置換機能を使いこなす
後藤大地(オングス)
2007/07/01 00:00
6年ぶりの大きなアップデートとなったEmacs 22.1、CVS先端の開発バージョンを使っているユーザは、なんとなく見過ごしてしまっているかもしれないが、新しい機能には便利なものが多い。ここでは、特に強化された置換機能について取り上げる。使いこなせば強力なので、是非使ってみて欲しい。
リファクタリングも
月並な例だがソースコードのリファクタリングに応用した場合の例をみていこう。リスト10のようなソースコードを用意する。メソッドに一致するように表現を書いたら、リスト12のようにリファクタリング後の名前規則にそうように置換する。結果がリスト13だ。
リスト10 リファクタリング対象のソースコード
public int yourMethod1() { return 0; }
public int yourMethod2(int) { return 0; }
リスト11 ゲッターメソッドに対象をしぼって
Query replace regexp: \(\w+[(].*[)]\)
ここでは一致した文字列の内容を編集している。関数によって、一致した文字列の加工ができるわけだ。これは便利だろう。
リスト12 規定のメソッド名にそろえる
Query replace regexp with: get\,(concat (upcase (substring \1 0 1)) (substring \1 1))
リスト13 リファクタリング後のソースコード
public int getYourMethod1() { return 0; }
public int getYourMethod2(int) { return 0; }
基本パターン
さて、これまでの内容をふまえつつ、例をもうひとつ。これが基本パターンとなるだろう。番号が10以上20以下の数字ではじまっている行に対して置換を実行するというものだ。
リスト14 置換対象
10: Typo Test
aa: Typo Test
30: Typo Test
bb: Typo Test
20: Typo Test
リスト15 一致対象
Query replace regexp: \([0-9]+\)\(.*\)\(Typo\)
リスト16 番号が10以上20以下の数字ではじまっている行に対して置換
Query replace regexp with: \1\2\,(if (and (<= 10 (string-to-int \1)) (<= (string-to-int \1) 20)) "Type" \3)
リスト17 置換後テキスト
10: Type Test
aa: Typo Test
30: Typo Test
bb: Typo Test
20: Type Test
BASICのようなプログラミング言語において使えるだろう。今更、どれだけ需要があるか不明だが……
とはいえ、処理自体は汎用的なものだ。一致対象に対して置換指定でしぼりこみをかけるわけで、プログラマブルreplace-regexpの典型的パターンのひとつとして覚えておこう。
- 0人の推薦記事
- 1人がクリップ
-
ソーシャルブックマーク(-)
- トラックバック(0)
米フォレスター・リサーチ社 シニアアナリスト Jeremiah K.Owyang氏を迎え、同氏が提唱するソーシャルテクノロジーを効果的に活用方法するための方法『POST』を日本で初めて紹介する注目のリアルイベント
- 今日のトップ記事
- 昨日
- 4日前
- 5日前
- 6日前
- 7日前
- ホワイトペーパー
- 話題のタグ
リファレンス
Mac OS X
モバイル
Windows
UI
ユーザーインタフェース
iPod touch
Google
Flash
仮想化ソフトウェア
RIA
Python
iPhone 3G
プログラミング言語
データベース
Database
レビュー
Off Topic
オープンソース
Adobe
JavaScript
PHP
Tips
Webサービス
Webアプリケーション開発
Firefox
Internet Explorer
iPhone
プロジェクト管理
ブラウザ
入門
Ajax
小技
Webデザイン
Safari
Apple
server
仮想化
SOA
携帯電話機
脆弱性
開発環境
デザイン
Firefox 3
Mozilla
Java
ソフトウェア開発
Linux
HTML
CSS
話題のタグを見る »
ソーシャルテクノロジーをビジネスに利用する
Firefox 3のブックマークデータに関連するその他のテーブル
iPhoneでQRコードの読み取りを試す、しかし
Oracle VM Managerで仮想マシンを動かす
グルジアに渡ったカメラマンの全記録--大国に翻弄される人々の息遣い
iPod touchで音声通話が可能に--Fringを早速試す
Mozilla Labs、Firefoxで地理情報を認識活用できるプラグイン「Geode」を正式発表
DelphiのパフォーマンスをDelphiで改善:エンバカデロの製品戦略
社内政治を生き抜くための教訓10箇条
Techno Exchange
ネットと家電をつなぐチャレンジ「Life-X」
ZDNet Japan Green IT
エンタメCGM「gooメーカー☆メーカー」
これからの時代のセキュリティ対策
ERPパッケージの導入を成功させるコツ
グリーンITの第一歩は見える化です