我尝试使用以下内容搜索一些文本并将其替换为以 # 开头的其他文本。在 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)
您可以使用
查找内容:^class boy.*(?:\R(?!}$).*)*\R\K(?=Height)
替换为:#
.匹配换行符:已禁用
细节:
^- 行的开头class boy-class boy然后尽可能少的任何零个或多个字符.*- 其余行(?:\R(?!}$).*)*- 零个或更多行到文件末尾或等于的行}\R- 换行序列\K- 省略匹配的文本(?=Height)- 就在右边,一定有Height。