假设我在emacs中打开的文本文件(或dired缓冲区)中有以下内容:file_01.txt file_02.txt ... file_99.txt
我想查询 - 替换或替换文件到01_file.txt等 .
我想使用query-replace-regexp或replace-regexp,但不知道要放什么 . 搜索部分我放入“file_ ..”,但“..”被读作替换字符串中的句点 . 我开始学习regexp并且不知道如何做到这一点 . 请帮忙,谢谢 .
我正在尝试重现此示例以用于学习目的 .
我有 file_01.txt file_02.txt file ... 的缓冲区
file_01.txt file_02.txt file ...
使用 re-builder 时,表达式 \(file\)_\([0-9]+\) 不起作用,但必须将转义加倍,例如 \\(file\\)_\\([0-9]+\\) .
re-builder
\(file\)_\([0-9]+\)
\\(file\\)_\\([0-9]+\\)
因为它涉及到悬而未决,我尝试了上面所写的内容,但无济于事 .
以下命令
M-x replace-regexp \(file\)_\([0-9]+\) 或 \\(file\\)_\\([0-9]+\\)
M-x replace-regexp \(file\)_\([0-9]+\)
换成了
\2_\1 或 \\2_\\1
\2_\1
\\2_\\1
始终导致 Replaced 0 occurences . 也就是说,无论圆括号前的 \ 是单倍还是加倍 .
Replaced 0 occurences
\
很明显,我在这里遗漏了一些明显的东西 . 你能解释一下吗?
我正在使用GNU Emacs 24.3.1(x86_64-pc-linux-gnu,GTK版本3.10.7)
M-x replace-regexp 调用要用正则表达式替换的函数 .
M-x replace-regexp
对于替换正则表达式输入: \(file\)_\([0-9]+\)
这将创建两个组,一个匹配'file'部分,另一个匹配数字 . 大括号 \( ... \) 是稍后在替换字符串中使匹配可用的必要条件 .
\( ... \)
替换为输入: \2_\1
这将插入搜索字符串(数字部分)中的第二个匹配项,添加_(下划线),然后添加搜索字符串中的第一个匹配项(“文件”) .
有关Emacs正则表达式的更多信息,请参阅Regexp Syntax和Regexp Replace .
一旦掌握了regexp基础知识,您可能需要查看带有 M-x re-builder 的Emacs ReBuilder工具,它允许您以交互方式构建正则表达式 .
M-x re-builder
2 回答
我正在尝试重现此示例以用于学习目的 .
我有
file_01.txt file_02.txt file ...
的缓冲区使用
re-builder
时,表达式\(file\)_\([0-9]+\)
不起作用,但必须将转义加倍,例如\\(file\\)_\\([0-9]+\\)
.因为它涉及到悬而未决,我尝试了上面所写的内容,但无济于事 .
以下命令
M-x replace-regexp \(file\)_\([0-9]+\)
或\\(file\\)_\\([0-9]+\\)
换成了
\2_\1
或\\2_\\1
始终导致
Replaced 0 occurences
. 也就是说,无论圆括号前的\
是单倍还是加倍 .很明显,我在这里遗漏了一些明显的东西 . 你能解释一下吗?
我正在使用GNU Emacs 24.3.1(x86_64-pc-linux-gnu,GTK版本3.10.7)
M-x replace-regexp
调用要用正则表达式替换的函数 .对于替换正则表达式输入:
\(file\)_\([0-9]+\)
这将创建两个组,一个匹配'file'部分,另一个匹配数字 . 大括号
\( ... \)
是稍后在替换字符串中使匹配可用的必要条件 .替换为输入:
\2_\1
这将插入搜索字符串(数字部分)中的第二个匹配项,添加_(下划线),然后添加搜索字符串中的第一个匹配项(“文件”) .
有关Emacs正则表达式的更多信息,请参阅Regexp Syntax和Regexp Replace .
一旦掌握了regexp基础知识,您可能需要查看带有
M-x re-builder
的Emacs ReBuilder工具,它允许您以交互方式构建正则表达式 .