我想知道grep中的正则表达式,以匹配不是特定单词的所有内容。我知道如何不匹配的一切,是不是单字符,Grep Regex - 括号内为单词?
gibberish blah[^.]*jack
这将匹配等等,千斤顶和一切只要在两者之间不包含周期之间。但是有可能做这样的事情吗?
gibberish blah[^joe]*jack
只要中间没有包含“joe”这个词,匹配blah,jack和它们之间的所有内容?
更新: 我也可以使用AWK,如果这样可以更好地适合这个目的。
所以基本上,我只想得到一句“胡言乱语别言杰克”,只要“乔”不在其他字里。
更新2(答案,以一个不同的问题):
对不起,我累了。这句话实际上可以包含单词“乔”,但不是其中的两个。所以“胡言乱语jill joe moo杰克”将被接受,但“胡言乱语jill joe moo joe jack”不会。 无论如何,我想出解决我的问题。只要grep为“乱码。*杰克”,然后做一个字数(WC),看看有多少“乔”在这个句子中。如果wc返回1,那么没关系,但如果它返回2或更多,则该句子是错误的。
所以,很抱歉提出一个问题,甚至不能解决我的问题。我会将菲尼克斯的答案标记为正确答案,因为他的回答看起来会解决原来的帖子问题。
不,正则表达式不会让你这样做。方括号内的内容是* set *。无法在BRE或ERE中否定原子。尽管你可能可以在PCRE中做到这一点。 – ghoti
这个不清楚。它应该首先匹配“blah”或“blahish”? oO –
@sputnick你说得对,那还不清楚。我会编辑它。 – DanielTA