我有这个标签/单词:
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>
子字符串,如果找到,匹配失败 .*
– 文件的其余部分直至结束。