在Sublime Text 2中替换正则表达式
我期待在Sublime Text 2中使用正则表达式进行搜索替换。关于此的文档相当贫乏。 具体来说,我想对群组进行替换,所以像转换此文本一样:
 Hello my name is bob 
这个搜索词:
  找到: my name is (w)+ 
  替换为: my name used to be $(1) 
搜索字词工作得很好,但我无法找到一种方法来实际使用正则表达式组进行替换。
  对于第一个捕获组(通常括号$1或1 (反斜杠))(括号中的模式的第一个匹配)。  所以也许尝试: 
my name used to be 1
要么
my name used to be $1
更新:正如几个人指出的,你的原始捕获模式是不正确的,只会捕获名称的最后一个字母而不是整个名称。 您应该使用以下模式来捕获名称的所有字母:
my name is (w+)
顺便说一下,在上面的问题中:
对于:
Hello, my name is bob
查找零件:
my name is (w)+
带替换部分:
my name used to be 1
会返回:
Hello, my name used to be b
将查找部分更改为:
my name is (w+)
替换将是你所期望的:
Hello, my name used to be bob
虽然( w)+会匹配“bob”,但它不是您想要替换的分组。
在搜索字符串中使用()括号
有一件重要的事要强调! 搜索字符串中所有要在替换字符串中使用的匹配段都必须用括号括起来 ,否则这些匹配段将无法与变量(如$ 1,$ 2,...和 1, 2,..等。
例:
我们想用'px'替换'em',但保留数字值:
margin: 10em
margin: 2em
  所以我们使用margin: $1px作为替换字符串。 
  正确:通过( )圆括号包含所需的$1匹配段,如下所示: 
  FIND: margin: ([0-9]*)em (带圆括号) 
  更换为: margin: $1px 
结果:
margin: 10px
margin: 2px
  WRONG:以下正则表达式模式将匹配所需的行,但匹配的段将不会在替换的字符串中用作变量,例如$1 : 
  FIND: margin: [0-9]*em (不带圆括号) 
  更换为: margin: $1px 
  结果:( $1未定义) 
margin: px
margin: px
上一篇: Regular expression search replace in Sublime Text 2
下一篇: Matching operators (e.g. ==, >=) with regular expressions
