正则expression式:删除所有没有这个词/标签的文件的内容

我有这个标签/单词:

text text

text <Arlechino> text

text text

所以,我知道如何删除所有具有这个标签的文件的内容:( (?s)(.*?(<Arlechino>)).*$

问题是如何删除没有这个标签的文件的内容。 无论如何,我可以轻松地通过search文件,并select那些没有这个标签。

但是我需要一个正则expression式

简而言之:如果正则expression式发现标签什么也不做。 如果没有find标签,会删除文件的全部内容。

在Notepad ++中,要对整个文档执行这样的搜索和替换操作,您需要使用

 (?s)\A(?!.*?<Arlechino>).* 

或者,如果您有必须匹配整个单词的关键字列表,但它们可以以非单词字符开始,请使用

 (?s)\A(?!.*?(?<!\w)(<Arlechino>|Word1)(?!\w)).* ^^^^^^^ ^^^^^^ 

如果关键字前面有一个单词char,那么(?!\w)失败了匹配;如果关键字后跟一个单词char(有效地作为明确的单词边界),则(?!\w)不能匹配。

详情

  • (?s) – 使点匹配换行符
  • \A – 文档的开始
  • (?!.*?<Arlechino>) – 一个负向前视,在任何0+字符之后检查是否有一个<Arlechino>子字符串,如果找到,匹配失败
  • .* – 文件的其余部分直至结束。

在这里输入图像描述