8

我正在查看一个非常大的流体动力学代码,c其中通常有一些非常糟糕的变量选择。包括一个名为“g”的全局变量。类似地,有一个文件包含一个名为“geom”的变量和许多包含子字符串“geom”的其他变量(例如geometry、geomAL、geom_arb 等)。

有没有办法搜索与正则表达式完全匹配的变量,而不是部分匹配?

例如:搜索“geom”与“geomAL”不匹配。显然emacs不知道变量从哪里开始或结束,但这可以构造为 c 模式的函数吗?

4

4 回答 4

8

Emacs 正则表达式引擎 ( C-M-s <regexp>) 为这类事情提供了各种操作数,例如单词边界\<\>零宽度断言。所以\<geom\>会单独匹配geom并且(取决于你的模式的语法表)也许还有geom_something. \<geom\>[^_]如果您需要排除下划线后缀,请尝试。

于 2013-08-30T13:31:36.020 回答
3

您可以使用C-u C-s \_<g\_>which 将使用带有符号边界标记的正则表达式搜索来搜索符号 g或者在最近足够多的 Emacs 中,您可以M-s _ g执行基本相同的操作(M-s是其中的“搜索前缀键” M-s _isearch-forward-symbol

于 2013-08-30T17:26:07.130 回答
1

你试过 Emacs TAGS 系统吗?它应该能够解析出变量,并且可以提供精确的查找。见这里:http ://www.emacswiki.org/emacs/EmacsTags

使用 etags 帮助器生成标签表:

etags *.c  

寻找一个标签

M-. your-var-name
于 2013-08-30T13:31:43.983 回答
0

如果您想使用 emacs 正则表达式,http: //www.emacswiki.org/emacs/RegularExpression 几乎可以满足您的一切需求。

于 2013-08-30T13:54:22.443 回答