Regex Emacs正则表达式替换

Regex Emacs正则表达式替换,regex,emacs,replace,Regex,Emacs,Replace,在我的latex文件中,我定义了 \newcommand{\replace}[2]{\textcolor{red}{\sout{#1} }\textcolor{blue}{{#2}}} 只是为了强调变化。所以在我的论文草稿中,有很多 \replace{old text}{new text} 现在论文被接受了,我想得到一个干净的版本。如何使用emacs Regex replacement将它们全部更改为 new text 一种非常简单的方法是修改replace命令,使其仅打印新文本: \ne

在我的latex文件中,我定义了

\newcommand{\replace}[2]{\textcolor{red}{\sout{#1} }\textcolor{blue}{{#2}}}
只是为了强调变化。所以在我的论文草稿中,有很多

\replace{old text}{new text}
现在论文被接受了,我想得到一个干净的版本。如何使用emacs Regex replacement将它们全部更改为

new text

一种非常简单的方法是修改replace命令,使其仅打印新文本:

\newcommand{\replace}[2]{#2}

否则,我将使用键盘宏执行此操作,如以下所示:

C-s;;我向前搜索
\             ;; 自插入命令
替换{;;自插入命令*8
换行符
向后字符
前向性
C-SPC;;设置标记命令
C-r;;我向后搜索
\;自插入命令
替换;;自插入命令*7
换行符
C-w;;杀伤区
2*C-SPC;;设置标记命令
前向性
DEL;;删除向后字符
C-u C-SPC;;设置标记命令
C-d;;删除字符
这个键盘宏背后的逻辑是搜索
\replace{
命令,然后使用
向前sexp
向后sexp
在平衡的`花括号'对之间移动


Edit:请注意,
forward sexp
的绑定传统上写为C-M-,但这样的按键可能会被您的窗口管理器截获(至少对于Linux框来说是一种非常常见的行为)。因此,通常更容易键入ESCC-。

我会使用命令
query replace regexp
M-x query用以下模式替换regexp
C-M-%
):

\\replace{.+?}{\(.+?\)}
和以下替换字符串:

\1

请注意大括号内的问号,这使搜索变得懒惰(非贪婪),这意味着它匹配的字符尽可能少。

我认为这样的解决方案在参数中出现}{的情况下不起作用。例如:
\replace{$\frac{1}{2}${$\frac{1}{3}}
谢谢Erik的建议。Francesco提出的问题是有效的。我确实遇到过这样的问题。