我在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中替换时使用正则表达式通配符的正确方法是什么,以便我可以(\cref{exNUMBER})
或(\cref{exNUMBERLETTER})
分别替换\eqref{exNUMBER}
或\eqref{exNUMBERLETTER}
?
答案 0 :(得分:3)
捕获您想要保留在组中的内容(这样您就可以将其放回替换中):
devise_for :users, skip: [:sessions],
controllers: {
registrations: 'users/registrations'
}
标记表示添加括号以捕获您想要保留为组的内容(组1)。
将匹配替换为:
\(\\c(ref\{ex(\d|\d\l)\})\)
^ ^
\eq\1
是后退参考到第1组 - 它会输出匹配中捕获的内容。
答案 1 :(得分:2)
波希米亚人的回答是完美的,应该是公认的答案。我只是添加了一些更简单的东西,因为我的OP正则表达式的复杂性让我发现它有点难以理解。对于更简单的情况,假设我们有一个包含以下内容的文本文件:
345
3234
23423
我们想要转换为:
{ value: 345 }
{ value: 3234 }
{ value: 23423 }
查找/替换的正确语法是:
(\d+)
{ value: \1 }
波希米亚人的回答非常明确地解释了这背后的逻辑,只是有更多的斜线:)。