notepad++正则表达式搜索失败

axc*_*tor 5 regex notepad++

我尝试使用以下内容搜索一些文本并将其替换为以 # 开头的其他文本。在 regex101 上它工作正常,但 NotePad++ 说搜索失败。还尝试在 \n 之前添加 \r 但没有帮助。

正则表达式:(class boy(?:.*\n)+\s*)(Height.*;\n)((?:.*\n)+})

要搜索的文本:

class boy Mike
{
Age = 20;
PhoneNum = 658965;
Height = 198;
City = LA
}
note boy Joe
{
Age = 21;
PhoneNum = 558565;
Height = 178;
City = BA
}

class boy Joe
{
Age = 21;
PhoneNum = 558565;
Height = 178;
City = BA
}
Run Code Online (Sandbox Code Playgroud)

代替: $1#$2$3

输出:

class boy Mike
{
Age = 20;
PhoneNum = 658965;
#Height = 198;
City = LA
}
note boy Joe
{
Age = 21;
PhoneNum = 558565;
Height = 178;
City = BA
}

class boy Joe
{
Age = 21;
PhoneNum = 558565;
#Height = 178;
City = BA
}
Run Code Online (Sandbox Code Playgroud)

Wik*_*żew 2

您可以使用

查找内容^class boy.*(?:\R(?!}$).*)*\R\K(?=Height)
替换为#
.匹配换行符:已禁用

在此输入图像描述

细节

  • ^- 行的开头
  • class boy-class boy然后尽可能少的任何零个或多个字符
  • .*- 其余行
  • (?:\R(?!}$).*)*- 零个或更多行到文件末尾或等于的行}
  • \R- 换行序列
  • \K- 省略匹配的文本
  • (?=Height)- 就在右边,一定有Height