Regex 匹配所有内容,但不包括文字-记事本++;

Regex 匹配所有内容,但不包括文字-记事本++;,regex,notepad++,Regex,Notepad++,输入: 应导致: start some T1 random T2 text T3 end 我试着用 start T1 T2 T3 end (?您可以使用以下正则表达式: 查找:^(?T\d|start)。*\R(?=(^(?start$).\R)*end$) 替换:(空) 匹配换行:否 单击“全部替换” 作出以下假设: 开始和结束分隔符应分别是其行上的唯一文本(因此不是--start或开始//) 它们应该以正确的顺序成对出现(因此首先是开始,然后是结束) 它们不应该嵌套,因此在开始之后不能

输入:

应导致:

start
some
T1
random
T2
text
T3
end
我试着用

start
T1
T2
T3
end

(?您可以使用以下正则表达式:

查找:
^(?T\d|start)。*\R(?=(^(?start$).\R)*end$)

替换:(空)
匹配换行:

单击“全部替换”

作出以下假设:

  • 开始
    结束
    分隔符应分别是其行上的唯一文本(因此不是
    --start
    开始//
  • 它们应该以正确的顺序成对出现(因此首先是
    开始
    ,然后是
    结束
  • 它们不应该嵌套,因此在
    开始之后
    不能在
    结束之前出现另一个
    开始

前瞻性使得这是一个相当低效的正则表达式,因为对于每个匹配,它需要再次检查后面的文本,直到下一个
结束

否,这不可能一次完成。使用PythonScript更容易。此外,可以编写正则表达式,但需要多次“替换所有”点击才能删除所有unnecessary
Tn
行,然后是一个正则表达式来获取
start\K(?s:.*)(=end)
可以使用。感谢您指出限制。但是有一个问题,文本文件中的所有内容都会在“开始”分隔符之前超过50行时匹配。即使每50行都是相同的。我再次尝试,限制不是50行,而是191行。我尝试添加191行“测试”在定界符开始之前。这是为什么?这看起来像是记事本++中的一个限制,因为正则表达式本身绝对没有这样做的原因。我认为在一定数量的行和/或字符之后,将中止前瞻,这是不应该做的。
>(?<=start)[\S\s]*?(?=end)