如何用grepWin查找含指定词但不含另一词的文件?
在Win10的grepWin v2.0.13中匹配含指定词且完全排除另一词的文件
核心设置与正则方案
- 必开选项:在grepWin搜索界面,勾选Dot match newline——这个选项能让正则的
.匹配换行符,实现对整个文件内容的扫描,而非仅单行。 - 正确正则表达式:
若不想用模式修饰符,也可以用^(?s)(?!.*not).*yes.*$[\s\S]替代.(匹配所有空白/非空白字符,包括换行):^(?!.*[\s\S]not)[\s\S]*yes[\s\S]*$
之前正则无效的原因
你之前的测试要么没开启Dot match newline,要么缺少全局匹配的模式修饰符,导致正则仅对单行内容生效。像both-a.txt、both-b.txt这类同时包含yes和not的文件,会因为某一行只含yes(不含not)被错误匹配,而非检查整个文件是否存在not。
验证结果
用上述设置和正则后,只会匹配yes.txt,同时排除not.txt、both-a.txt、both-b.txt三个不符合要求的文件,完全符合预期。
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

