替换 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 的回答非常清楚地解释了这背后的逻辑,只是多了很多斜线:)。
我在 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 的回答非常清楚地解释了这背后的逻辑,只是多了很多斜线:)。