我有这个标签/单词:
text text
text <Arlechino> text
text text
因此,我知道如何删除具有此标记的所有文件的内容:(?s)(.*?(<Arlechino>)).*$
问题是相反的,如何删除没有此标记的文件的内容。无论如何,我可以通过搜索文件并选择那些没有这个标签的文件来轻松完成。
但我需要一个正则表达式。
简短:如果正则表达式发现标签什么都不做。如果没有找到标签,将删除整个文件内容。
答案 0 :(得分:1)
在Notepad ++中,要在整个文档上执行此类搜索和替换操作,您需要使用
(?s)\A(?!.*?<Arlechino>).*
或者,如果您有一个必须与整个单词匹配的关键字列表,但它们可以以非单词字符开头,请使用
(?s)\A(?!.*?(?<!\w)(<Arlechino>|Word1)(?!\w)).*
^^^^^^^ ^^^^^^
如果关键字前面带有单词char,则(?<!\w)
会使匹配失败,如果关键字后跟单词char({有效地作为明确的单词边界使用),则(?!\w)
会失败。< / p>
<强>详情:
(?s)
- 使点匹配换行符\A
- 文件开头(?!.*?<Arlechino>)
- 在任何0+字符之后检查是否存在<Arlechino>
子字符串的否定前瞻,如果找到,则匹配失败.*
- 文档的其余部分一直到最后。