我希望做用正则表达式搜索替换文本崇高2. 对这个文档是相当贫血。 具体来说,我想要做一个替换组,所以喜欢将这段文字的内容:
Hello my name is bob
而这个搜索词:
查找内容: my name is (\w)+
替换为: my name used to be $(1)
搜索项工作得很好,但我不能想出一个办法,真正做一个替换使用正则表达式组。
我希望做用正则表达式搜索替换文本崇高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,...等。
例:
我们想取代“时间”与“像素”,但保留数值:
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
下面是认可的答案的视觉呈现。
请注意,如果使用超过9个捕捉组,你必须使用语法${10}
$10
或\10
或\{10}
将无法正常工作。