Notepad ++中的命名捕获组不会返回捕获的值

时间:2018-05-08 16:26:25

标签: regex notepad++

我尝试使用Notepad ++压平一系列线条。我有一组数字

{
    {99999    0} nan "" "" Unknown Unknown -1 -1 nan nan 0 Unknown Unknown Unknown
}

我想要像

[{]\n.*(\d+).*(\d+)\n.*[}]

我的RegEx为{$1 $2},替换字符串为{ {9 0} nan "" "" Unknown Unknown -1 -1 nan nan 0 Unknown Unknown Unknown } 。但是当我更换时,最终会从第1组中拉出最后一位数字,然后我得到

(\d+).*(\d+)

如果我将RegEx简化为{{1}},它按预期工作,但粒度更精细。 Notepad ++ v7.4.2。我的语法有问题吗?

2 个答案:

答案 0 :(得分:1)

您正在使用带有贪婪运算符的正则表达式,然后.*正在捕获除最后一个之外的所有数字。

让它变得懒惰,它会起作用:

[{]\n.*?(\d+).*(\d+)\n.*[}]
       ^---- here

<强> Working demo

答案 1 :(得分:1)

@Federico找到了你的理由,但有一个更快的方法来做同样的事情:

{\h*\R+\h*(\d+)\s+(\d+)\s*\}

替换为:

{$1 $2\}

Live demo