记事本++中的命名捕获组不返回捕获的值

  • 本文关键字:返回 记事本 regex notepad++
  • 更新时间 :
  • 英文 :


我试图使用记事本++展平一系列行。 我有一组数字

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

我想成为的样子

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

我的正则表达式[{]n.*(d+).*(d+)n.*[}],替换字符串{$1 $2}。 但是当我替换时,它最终从组 1 中提取最后一个数字,我得到

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

如果我将正则表达式简化为(d+).*(d+)它按预期工作,但粒度要精细得多。 记事本++ v7.4.2. 我的语法有问题吗?

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

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

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

工作演示

@Federico找到了原因,但有一种更快的方法来做同样的事情:

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

替换为:

{$1 $2}

现场演示

最新更新