在记事本++中替换正则表达式捕获组?


77

快速提问:我有一个regexp ^(?:\b[A-Z]+\b\s+)+(.*)\d{8},它提供了两个捕获组。我想将捕获组1替换为空白。那可能吗?

如果我确实替换为:\1它将替换TEST TESTER Hello, world. Another word here. 75793250->为Hello, world. Another word here。我想这样的结果:TEST TESTER 75793250\1用空格代替。


3
嗯,据我所知只有一个捕获小组...?(?: ...)是一个非捕获组。
2013年

我以为它有两个,0和1?组0是全场比赛吗?无论如何,我想用空白替换Notepad ++调用1的组。
Kaah 2013年

如果我确实替换为:\1它将替换TEST TESTER Hello, world. Another word here. 75793250->为Hello, world. Another word here。我想这样的结果:TEST TESTER 75793250\1用空格代替。
Kaah 2013年

\1在最新版本的Notepad ++中,这对我不起作用,但是我可以改为使用它$0。看来他们更改了组替换语法。
demoncodemonkey

Answers:


133

尝试使用:

^((?:\b[A-Z]+\b\s+)+)(?:.*)(\d{8})

并替换为:

\1\2

1
@Kaah不客气!:)另外,提醒我更新记事本版本!我在xD上使用6.1.8
Jerry

8

为什么要这么做。

这样做

正则表达式:^(\b[A-Z]+\b\s+)+(?:.*)(\d{8})

用。。。来代替:\1 \2


谢谢,但这Invalid regular expression在Notepad ++ 6.3.3中提供了。请修改Anirudh。
Kaah 2013年

该正则表达式将返回,TESTER 75793250因为捕获重复的组只会给您匹配的最后一个字符串。另一个示例:用abcd正则表达式(.)+替换字符串并替换字符串\1将导致字符串d
steve9164,2016年

6
“为什么要这么做。”?因为OP不知道,所以才问这个问题。像这样的Snark对任何人都没有好处。
杰克·里斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.