【发布时间】:2013-07-20 15:00:53
【问题描述】:
假设您有一个 Java 文件,其中包含许多单字母变量名,例如 a,x,f 等,并且您想将它们更改为更有意义的东西。你可以试试 用“文件名”替换每次出现的“f”,但这会弄乱所有地方 其中“f”出现在一个单词中(例如在关键字 if 中)。你会怎么做 使用正则表达式搜索和替换来纠正这个问题?
我需要在 Emacs 中使用单词边界来编写它。由于我是新人,使用 Matcher 类是否适用?
【问题讨论】:
假设您有一个 Java 文件,其中包含许多单字母变量名,例如 a,x,f 等,并且您想将它们更改为更有意义的东西。你可以试试 用“文件名”替换每次出现的“f”,但这会弄乱所有地方 其中“f”出现在一个单词中(例如在关键字 if 中)。你会怎么做 使用正则表达式搜索和替换来纠正这个问题?
我需要在 Emacs 中使用单词边界来编写它。由于我是新人,使用 Matcher 类是否适用?
【问题讨论】:
如果您必须使用本机 emacs 执行此操作: 词边界是合理的搜索边界。 Matcher 类是一个Java 构造。如果您正在编写代码来进行搜索和替换。由于您完全在 emacs 中执行此操作,因此它不适用。
需要注意的是,这些变量不能从多个源文件中使用,否则会搞砸。
不过,我不会用原始的 emacs 来做这件事。我会使用 IDE 重构工具。 Emacs 甚至有一个可以安装的Java Refactoring。使用重构工具,该工具可以理解语法并且比正则表达式更具体。
【讨论】:
这是基于question的答案:
find-name-dired.~/Dropbox/source/java/。*.java。
您最终将进入一个 dired 缓冲区,其中包含项目根目录中的所有 java 文件。dired-do-query-replace-regexp。
现在系统会提示您输入要替换的内容 - 输入例如\bf\b。
接下来,输入替换例如filename。\bm\b。
您必须每次键入 SPC 接受或 n 跳过
当前实例。替换时您可以通过键入 ? 查看所有选项。【讨论】:
\bj\b 应该找到字母 i 的位置。因此,b 之间的任何绑定都是要找到的字符。
【讨论】: