我正在尝试删除 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"/>
行之后的所有内容,它对我有用。
感谢阅读
要匹配包含
<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).*
请参阅 正则表达式演示。
要立即删除结束标记后的所有字符,您可以使用
\K
忘记到目前为止匹配的内容,然后使用 [\s\S]+
删除其后面的所有字符
如果未选中“匹配大小写”复选框,则不需要
(?i-s)
来区分大小写。
<App_Data App="MOD" Name="DestAreas" Value="-1"/>\K[\s\S]+