2013-08-30 100 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

生成與ETag的幫手的標籤表:

etags *.c 

查找標籤與

M-. your-var-name 
3

您可以使用C-u C-s \_<g\_>將使用帶有符號界碑正則表達式搜索的符號g搜索。或者在最近足夠的Emacs中,您可以執行M-s _ g,它們的功能基本相同(M-s是「搜索前綴鍵」,其中M-s _isearch-forward-symbol)。