2013-08-30 8 views
7

cの非常に大きな流体力学コードを見ていますが、しばしば非常に貧弱な変数の選択肢があります。 'g'という名前のグローバル変数を含む。同様に、 'geom'という名前の変数と、 'geom'という部分文字列(geometry、geomAL、geom_arbなど)を含む他の多くの変数を持つファイルがあります。部分的ではなく完全正規表現によるEmacsの検索

正規表現と完全に一致する変数を部分的に検索する方法はありますか?

たとえば、「geom」を検索すると、ではなく、と一致する「geomAL」となります。明らかに、emacsは先験的にがどこで変数を開始または終了するか知っていませんが、これはcモードの関数として構築できますか?

+1

http://www.emacswiki.org/emacs/RegularExpression – devnull

答えて

7

Emacsの正規表現エンジンは、(C-M-S<regexp>)、ワード境界\<\>ゼロ幅アサーションのようなもののこの種のための様々なオペランドを有します。だから\<geom\>geomと(あなたのモードの構文テーブルによって)おそらくgeom_somethingの接頭辞にもマッチします。アンダースコアサフィックスを除外する必要がある場合は、\<geom\>[^_]を試してください。

+0

申し訳ありませんが、私は偶然自分の代わりにこの回答を編集しました。編集をキャンセルする方法はありますか? – mvw

+0

@mvw:それは査読者によって拒否されました。編集したリンクをクリックして、不要なものの前の編集のヘッダーにあるロールバックリンクを探して、編集をロールバックすることもできます。 – tripleee

+0

私は個人的には '\ b'オペランドを好んでいますが、これは少し入力しやすくなっています。< or >。 – Malabarba

1

Emacs TAGSシステムを試しましたか?それはバースを解析することができなければならず、正確なルックアップを提供するかもしれません。ここを参照してください:http://www.emacswiki.org/emacs/EmacsTags

はetagsのヘルパーとタグテーブルを生成します:あなたはEmacsの正規表現を使用したい場合は

M-. your-var-name 
3

C-u C-s \_<g\_>を使用すると、シンボルgをシンボル境界マーカー付きの正規表現検索を使用して検索します。または、最近のEmacsでは、M-s _ gを実行することができます。がisearch-forward-symbolの「検索プレフィックスキー」のようになります(M-s)。