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