Regex 如何替换正则表达式

Regex 如何替换正则表达式,regex,kate,Regex,Kate,我正在使用凯特编辑器。下面是一个显示我的问题的最小示例: 我有一个文件,其中包含以下内容: \command{stuff} 这里的东西是任意一串字母。我想把这个换成 \disobey{stuff} 那里的东西是不变的。正则表达式: \\command\{[a-zA-Z]*\} 匹配这样的表达式。因此,我使用CTRL-r拖动“替换”对话框,然后输入 Find: \\command\{[a-zA-Z]*\} Replace: \\disobey\{\1\} 所以在文档中,一个实际的例子是 \

我正在使用凯特编辑器。下面是一个显示我的问题的最小示例:

我有一个文件,其中包含以下内容:

\command{stuff}
这里的东西是任意一串字母。我想把这个换成

\disobey{stuff}
那里的东西是不变的。正则表达式:

\\command\{[a-zA-Z]*\}
匹配这样的表达式。因此,我使用CTRL-r拖动“替换”对话框,然后输入

Find: \\command\{[a-zA-Z]*\}
Replace: \\disobey\{\1\}
所以在文档中,一个实际的例子是

\command{exchange}
当我按下“替换”按钮时

\disobey{1}
在Kate文档:附录B:正则表达式中,\1应与使用的第一种模式匹配。这确实是正确的语法吗?我还尝试了$1、#1和各种其他东西。

()
包装值,将其作为一个组捕获,以便在替换中使用它

因此,将find regex更改如下:

\\command\{([a-zA-Z]*)\}

你应该做得很好。

这里有一段直接来自文档的引文:

字符串
\1
引用括号中的第一个子模式

因此,您需要将
[a-zA-Z]*
放入捕获组,如
([a-zA-Z]*)


@JonathanGallagher,很高兴能帮忙;)@戴帽子的人,好吧,下次,我肯定你会打败我;)在完全相同的文档中,它说
\1
匹配“括号中包含的第一个子模式”,老实说,文档中的这一点令人困惑。在附录B中,我猜你们是在引用它,他们首先讨论了模式。然后他们讨论子模式。本分包应提及“替代”。我真的认为它意味着abFind: \\command\{([a-zA-Z]*)\} Replace: \\disobey\{\1\}