Answers:
通常,第一个捕获组(括号中的模式的第一个匹配项)的反向引用为$1或\1(反斜杠一个),实际上Sublime支持两种语法。因此,请尝试:
my name used to be \1
要么
my name used to be $1
还请注意您的原始捕获模式:
my name is (\w)+
是不正确的,只会捕获名称的最后一个字母,而不是整个名称。您应该使用以下模式来捕获名称的所有字母:
my name is (\w+)
$0Sublime Text 2/3中使用了退出标记,将光标置于代码段扩展的退出位置。有关片段的更多信息。
$0是整个正则表达式匹配项;$1是第一个捕获组。
重要提示:
( )在搜索字符串中使用括号
虽然前面的答案是正确的,但有一点要强调!所有的搜索字符串匹配的段要在您使用替换字符串必须由封闭( )括号,否则,这些匹配的段不会对定义的变量,如访问$1,$2或者\1,\2等。
例如,我们要用“ px”替换“ em”,但保留数字值:
margin: 10em; /* Expected: margin: 10px */
margin: 2em; /* Expected: margin: 2px */
margin: $1px或margin: \1pxmargin: ([0-9]*)em//带括号margin: [0-9]*em正确的例子:使用margin: ([0-9]*)em搜索字符串(带括号)。用括号将所需的匹配段(例如$1或\1)( )括起来,如下所示:
margin: ([0-9]*)em带括号)margin: $1px或margin: \1px margin: 10px;
margin: 2px;
错误的情况示例:使用margin: [0-9]*em搜索字符串(不带括号)。以下正则表达式模式将匹配所需的行,但匹配的段将在替换字符串中不可用,例如$1或\1:
margin: [0-9]*em不带括号)margin: $1px或margin: \1px margin: px; /* `$1` is undefined */
margin: px; /* `$1` is undefined */
请注意,如果使用9个以上的捕获组,则必须使用语法${10}。
$10或\10或\{10}将无法正常工作。
1到第二个捕获组中,您需要使用大括号,例如${2}1; $ 21表示不存在的第21个捕获组。
$0吗?