Я новичок в регулярных выражениях и нашел команду на сайте с учебным пособием/тестом по регулярным выражениям, которая позволит мне искать 3 последовательные согласные. Единственная проблема в том, что я не могу понять, как использовать ее с grep. Кто-нибудь может мне помочь? Я пытаюсь выполнить поиск в текстовом файле списка слов, используя:
(?:([bcdfghjklmnpqrstvwxzy])(?!.{1,2}\1)){3}
решение1
Ваш шаблон Regex содержит:
- Группа, не захватывающая
(?:)
- Отрицательный просмотр вперед нулевой ширины,
(?!)
которые поддерживаются только grep
с PCRE, Perl-совместимыми регулярными выражениями ( -P
)
Итак, вам нужно grep -P
, и чтобы захватить только совпавшую часть, -o
:
% grep -Po '(?:([bcdfghjklmnpqrstvwxzy])(?!.{1,2}\1)){3}' <<<'foobarspfb'
rsp