在Notepad++中删除特定字符串后的行

问题描述 投票:0回答:2

我正在尝试删除 xml 文件中标记后的任何字符串。

<App_Data App="MOD" Name="DestAreas" Value="-1"/> //From this

random lines
random lines1
random lines2
random lines3

//To the end of xml file

我正在尝试这个:

(?i-s)(^.+\R){0}.*<App_Data App="MOD" Name="DestAreas" Value="-1"/>*\R(?1){63}

但仅适用于 63 行的文件,但 xml 文件没有确切的行数,有些文件较多,有些较少。

如果正则表达式删除

<App_Data App="MOD" Name="DestAreas" Value="-1"/>
行之后的所有内容,它对我有用。

感谢阅读

regex notepad++
2个回答
0
投票

要匹配包含

<App_Data App="MOD" Name="DestAreas" Value="-1"/>
的行,您只需使用
^.*?<App_Data App="MOD" Name="DestAreas" Value="-1"/>.*

为了避免将文本放入匹配值中,您可以在之后使用

\K
,以便从整个匹配内存缓冲区中删除匹配的文本,并且之后不会替换该行。

要匹配任何文本直到文件末尾,您只需使用

(?s).*
即可。这可以一次有效地匹配尽可能多的任何零个或多个字符,
(?s)
内联修饰符标志确保模式中当前位置右侧的任何
.
(当然在字符类中和转义时除外) ) 现在可以匹配换行符。

所以,你可以使用

^.*?<App_Data App="MOD" Name="DestAreas" Value="-1"/>.*\K(?s).*

请参阅 正则表达式演示


0
投票

要立即删除结束标记后的所有字符,您可以使用

\K
忘记到目前为止匹配的内容,然后使用
[\s\S]+

删除其后面的所有字符

如果未选中“匹配大小写”复选框,则不需要

(?i-s)
来区分大小写。

<App_Data App="MOD" Name="DestAreas" Value="-1"/>\K[\s\S]+

正则表达式演示

© www.soinside.com 2019 - 2024. All rights reserved.