在崇高的文本2正则表达式搜索替换(Regular expression search replace

2019-06-17 15:33发布

我希望做用正则表达式搜索替换文本崇高2. 对这个文档是相当贫血。 具体来说,我想要做一个替换组,所以喜欢将这段文字的内容:

Hello my name is bob

而这个搜索词:

查找内容: my name is (\w)+

替换为: my name used to be $(1)

搜索项工作得很好,但我不能想出一个办法,真正做一个替换使用正则表达式组。

Answer 1:

一般的背参考要么是$1\1 (反斜杠一个),用于在第一个捕获组(括号中的图案的第一匹配)。 因此,也许尝试:

my name used to be \1

要么

my name used to be $1

更新:正如一些人所指出的那样,你原来的拍摄模式不正确,将只捕获名称,而不是整个名字的最后一个字母。 您应该使用以下模式拍摄的所有名字的字母:

my name is (\w+)


Answer 2:

顺便说一句,在上面的问题:

对于:

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”中,它不是分组你要进行更换。



Answer 3:

使用()括号中搜索字符串

还有就是要强调一个重要的事情! 在您的搜索字符串 ,要在替换字符串使用所有匹配的段必须由()括号拥抱 ,否则,这些匹配的段将是不可到达与变量,如$ 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


Answer 4:

下面是认可的答案的视觉呈现。



Answer 5:

请注意,如果使用超过9个捕捉组,你必须使用语法${10}

$10\10\{10}无法正常工作。



文章来源: Regular expression search replace in Sublime Text 2