Как сопоставить шаблоны, которые должны удовлетворять нескольким требованиям, используя регулярные выражения? - PullRequest
0 голосов
/ 03 апреля 2019

У меня проблемы в egrep, пытаясь выяснить оператор AND как для сопоставления с шаблоном регулярного выражения, мне нужно сопоставить все строки, которые должны удовлетворять нескольким условиям в данном списке строк, вот некоторые вопросы, которые я У меня проблемы с

1) Найдите набор слов, которые содержат два последовательных е, И также содержит по крайней мере два я (ieei является действительным)

2) Найдите набор слов длиной не менее 5 символов И не содержат гласных

Я пытался использовать lookaheads (?=.*?ee)(?=.*?i.*i), но это не работает, что мне здесь не хватает?

1 Ответ

0 голосов
/ 03 апреля 2019

Как упоминалось Sundeep ваша реализация grep может поддерживать PCRE посредством использования флага -P, в этом случае будет работать следующее:

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

В противном случае,вместо этого вы можете использовать следующий шаблон ERE:

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

Соответствует словам, которые соответствуют одному из этих 3 шаблонов:

  • слово содержит i, за которым следуют два последовательных e, за которыми следуетдругим i
  • слово содержит i, за которым следует другой i, за которым следуют два последовательных e
  • слово содержит два последовательных e, за которыми следует i, за которым следует еще один i
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...