正则表达式:删除没有此单词/标签的所有文件的内容

时间:2017-03-22 10:09:23

标签: regex windows notepad++

我有这个标签/单词:

text text

text <Arlechino> text

text text

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

问题是相反的,如何删除没有此标记的文件的内容。无论如何,我可以通过搜索文件并选择那些没有这个标签的文件来轻松完成。

但我需要一个正则表达式。

简短:如果正则表达式发现标签什么都不做。如果没有找到标签,将删除整个文件内容。

1 个答案:

答案 0 :(得分:1)

在Notepad ++中,要在整个文档上执行此类搜索和替换操作,您需要使用

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

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

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

如果关键字前面带有单词char,则(?<!\w)会使匹配失败,如果关键字后跟单词char({有效地作为明确的单词边界使用),则(?!\w)会失败。< / p>

<强>详情:

  • (?s) - 使点匹配换行符
  • \A - 文件开头
  • (?!.*?<Arlechino>) - 在任何0+字符之后检查是否存在<Arlechino>子字符串的否定前瞻,如果找到,则匹配失败
  • .* - 文档的其余部分一直到最后。

enter image description here