如何使用正则表达式匹配需要满足多种要求的模式?

时间:2019-04-03 11:34:28

标签: regex grep

egrep遇到问题,试图找出与AND相似的运算符进行正则表达式模式匹配,我需要匹配给定字符串列表中必须满足多个条件的所有字符串,这是一些我遇到问题了

1)查找包含两个连续的单词集    e,并且AND还包含至少两个i(ieei有效)

2)查找至少5个字符长的单词集,并且    不包含任何元音

我尝试使用前行(?=.*?ee)(?=.*?i.*i),但不起作用,我在这里错过了什么?

1 个答案:

答案 0 :(得分:0)

Sundeep所述,您的grep实现可能通过使用-P标志来支持PCRE,在这种情况下,以下方法将起作用:

grep -P '(?=.*?ee)(?=.*?i.*i)'

否则,您可以改用以下ERE模式:

[^ ]*(i[^ ]*ee[^ ]*i|i[^ ]*i[^ ]*ee|ee[^ ]*i[^ ]*i)[^ ]*

它匹配符合这三种模式之一的单词:

  • 该单词包含一个i,后跟两个连续的e,后跟另一个i
  • 该单词包含一个i,后跟另一个i,后跟两个连续的e
  • 该单词包含两个连续的e,后跟一个i,然后是另一个i