hac*_*sid 422 regex replace sublimetext2
我想在Sublime Text 2中用正则表达式进行搜索替换.关于这个的文档相当贫乏.具体来说,我想对组进行替换,所以像转换这个文本:
Hello my name is bob
这个搜索词:
找什么: my name is (\w)+
用...来代替: my name used to be $(1)
搜索词工作正常,但我无法找到一种方法来实际使用regexp组进行替换.
Bob*_*ous 559
通常,反向引用是第一个捕获组的一个$1
或\1
(反斜杠一个)(括号中模式的第一个匹配).所以也许尝试:
my name used to be \1
Run Code Online (Sandbox Code Playgroud)
要么
my name used to be $1
Run Code Online (Sandbox Code Playgroud)
更新: 正如几个人所指出的那样,你的原始捕获模式是不正确的,只会捕获名称的最后一个字母而不是整个名称.您应该使用以下模式来捕获名称的所有字母:
my name is (\w)+
Run Code Online (Sandbox Code Playgroud)
Crn*_*ena 103
顺便说一下,在上面的问题中:
对于:
Hello, my name is bob
Run Code Online (Sandbox Code Playgroud)
找到部分:
my name is (\w)+
Run Code Online (Sandbox Code Playgroud)
有替换部分:
my name used to be \1
Run Code Online (Sandbox Code Playgroud)
会回来:
Hello, my name used to be b
Run Code Online (Sandbox Code Playgroud)
将查找部分更改为:
my name is (\w+)
Run Code Online (Sandbox Code Playgroud)
替换将是您所期望的:
Hello, my name used to be bob
Run Code Online (Sandbox Code Playgroud)
虽然(\ w)+将匹配"bob",但它不是您想要替换的分组.
Hrv*_*cic 47
在搜索字符串中使用()括号
有一点需要强调!所有的搜索字符串匹配的段要在您的使用替换字符串必须由()括号拥抱,否则,这些匹配的段将是不可到达与变量,如$ 1,$ 2,...,也不\ 1\2,..等
例:
我们想用'px'替换'em'但保留数值:
margin: 10em
margin: 2em
Run Code Online (Sandbox Code Playgroud)
所以我们使用margin: $1px
替换字符串.
正确:$1
用( )
括号括起所需的匹配段如下:
发现:( margin: ([0-9]*)em
带括号)
替换为: margin: $1px
结果:
margin: 10px
margin: 2px
Run Code Online (Sandbox Code Playgroud)
错误:以下正则表达式模式将匹配所需的行,但匹配的段在替换的字符串中将不可用作变量,例如$1
:
发现:( margin: [0-9]*em
没有括号)
替换为: margin: $1px
结果:( $1
未定义)
margin: px
margin: px
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
276011 次 |
最近记录: |