regex grepWin:查找这个而不是那个(搜索一个只有字符串而没有其他字符串的页面)

c8ib6hqw  于 2023-04-22  发布在  其他
关注(0)|答案(1)|浏览(112)

我试图找到文件,有一个特定的词 *,但在同一时间 * 失踪另一个(以任何顺序)通过grepWin为Win 10(v. 2.0.13)。我尝试了两个选项“点匹配换行符”和没有,但它仍然显示错误的结果(请在问题的最后找到示例文件内容)。
我尝试了许多正则表达式,但它们只对同一行(在np++中)有效,而不是整个文件。
^(?!.*not).*yes.*$ →这将查找文件(1),(3),(4)
(?=.*yes)(?!.*not)(.+) →这将查找文件(1),(3),(4)
^(?!.[\s\S]*not).[\s\S]*yes.*$ →这将查找文件(1),(4)
我需要的是找到具有某个单词的文件(例如:是),而不是另一个(例如:因此,如果文件同时包含两个单词,它不会显示在搜索结果中(类似于两步反向搜索),则只显示包含主要单词的文件,如果存在其他单词,则不会显示在搜索结果中。
假设我们有4个文本文件,**(1)一个只有单词yes(2)另一个只有not(3)第三个都有yes(4)**第四个都有not
我只想找到只有yes的文件[文件号(1),在下面的例子中是yes.txt]。
以下是四个文件:

(1)yes.txt

Lorem ipsum dolor sit amet,consectetur adipiscing elit,sed do eiusmod tempor incidididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,quis nostrud exercitation ullamco labris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehensiderit in voluptate velit esse cillum dolore eu fuguat nulla pariatur. Officiteur sint occasecat cupidatat non proident,sunt in culpa whi deserva mollit anim id est laborum.
Lorem ipsum dolor sit amet,consectetur adipiscing elit,sed do eiusmod tempor incidididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Only yes Duis aute irure dolor in reprehensiderit in voluptate velit esse cillum dolore eu fuguat nulla pariatur. Excepteur sint occasecat cupidatat non proident,凡属官方过失的人,其行为必须是故意的。

(2)not.txt

Lorem ipsum dolor sit amet,consectetur adipiscing elit,sed do eiusmod tempor incidididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,quis nostrud exercitation ullamco labris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehensiderit in voluptate velit esse cillum dolore eu fuguat nulla pariatur. Officiteur sint occasecat cupidatat non proident,sunt in culpa whi deserva mollit anim id est laborum.
Lorem ipsum dolor sit amet,consectetur adipiscing elit,sed do eiusmod tempor only not incidididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo conquat. Duis aute irure dolor in repreduderit in voluptate velit esse cillum dolore eu fuguat nulla pariatur. Excepteur sint occasecat cupidatat non proident,凡属官方过失的人,其行为必须是故意的。

(3)both-a.txt

Lorem ipsum dolor sit amet,consectetur adipiscing elit,sed do eiusmod tempor incidididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute yes irure dolor in reprehensiderit in voluptate velit esse cillum dolore eu fuguat la pariatur. Excepteur sint occasecat cupidatat non proident,凡属官方过失的人,其行为必须是故意的。
Lorem ipsum dolor sit amet,consectetur adipiscing elit,sed do eiusmod tempor not incidididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehensiderit in voluptate velit esse cillum dolore eu fuguat la pariatur. Excepteur sint occasecat cupidatat non proident,凡属官方过失的人,其行为必须是故意的。

(4)both-b.txt

Lorem ipsum dolor sit amet,consectetur adipiscing elit,sed do eiusmod tempor incidididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute aut irure dolor in reprehensiderit in voluptate velit esse cillum dolore eu fuguat la pariatur. Excepteur sint occasecat cupidatat non proident,凡属官方过失的人,其行为必须是故意的。
Lorem ipsum dolor sit amet,consectetur adipiscing elit,sed do eiusmod tempor yes incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo conquat. Duis aute irure dolor in reprehensiderit in voluptate velit esse cillum dolore eu fuguat la pariatur. Excepteur sint occasecat cupidatat non proident,凡属官方过失的人,其行为必须是故意的。

vnjpjtjt

vnjpjtjt1#

这个正则表达式适合我(假设它们实际上应该是单词,因为你的正则表达式根本没有考虑到这一点):

\A(?!.*\bnot\b).*\byes\b

取出:

  • \A-匹配整个字符串的开头(注意,通常grepWin在多行模式下匹配,所以^不能很好地匹配not
  • (?!.*\bnot\b)-否定的lookahead,以排除前面有任何字符的not匹配。\b用于将其标记为word
  • .*\byes\b-与上面的情况类似,但它通常只匹配yes

它应该与“点匹配换行符”选项一起使用。

相关问题