替换 Sublime Text 中的部分表达式?

Replacing parts of expressions in Sublime Text?

我在 Sublime Text 3 中使用正则表达式查找和替换功能,搜索 (\cref{exNUMBER})(\cref{exNUMBERLETTER}) 形式的表达式 例如:

(\cref{ex1})
(\cref{ex1a})

以下正则表达式可以很好地找到这些表达式:

\(\cref\{ex(\d|\d\l)\}\)

我正在苦苦挣扎的是如何用 \eqref{exNUMBER}\eqref{exNUMBERLETTER} 形式的表达式替换这些相同的表达式。例如,上面的例子会产生:

\eqref{ex1}
\eqref{ex1a}

我试过做一个大致平行的构造,\eqref\{ex(\d|\d\l)\},但是当我替换时产生的结果如下:\eqref{ex(d|d)}.

在 Sublime Text 3 中替换时使用正则表达式通配符的正确方法是什么,以便我可以用 \eqref{exNUMBER}\eqref{exNUMBERLETTER} 替换 (\cref{exNUMBER})(\cref{exNUMBERLETTER})(分别)?

捕获你想保留在一个组中的内容(这样你就可以把它放回替换中):

\(\c(ref\{ex(\d|\d\l)\})\)
     ^                  ^

标记表示添加的括号以捕获您想要作为一个组(第 1 组)保留的内容。

并将匹配项替换为:

\eq

是第 1 组的 反向引用 - 它输出比赛中捕获的内容。

Bohemian 的答案很完美,应该是公认的答案。我也只是添加了一些更简单的东西,因为 OP 的正则表达式很复杂,我发现它有点难以理解。对于更简单的情况,假设我们有一个包含以下内容的文本文件:

345
3234
23423

我们想要转换为:

{ value: 345 }
{ value: 3234 }
{ value: 23423 }

find/replace 的正确语法是:

  • 查找: (\d+)
  • 替换{ value: }

Bohemian 的回答非常清楚地解释了这背后的逻辑,只是多了很多斜线:)。