Использование регулярных выражений в Linux с grep

Я не могу заставить это простое регулярное выражение работать для сопоставления электронных писем:

'w*(?:.w*)*@w*(?:.w*)*w{2,5}'

Он должен работать, как я проверил его с regex pal
и это работает просто отлично.
Я думаю, что есть проблема с дополнительным классом персонажа
но я не уверен.

3
задан nhinkle
22.12.2022 20:20 Количество просмотров материала 3525
Распечатать страницу

1 ответ

вы должны использовать grep с регулярным выражением perl (-P вариант), который поддерживает утверждения lookahead, как (?: ). Также не следует экранировать фигурные скобки.

попробуй:

grep -P '\w*(?:\.\w*)*@\w*(?:\.\w*)*\w{2,5}'

поскольку выражения perl являются экспериментальной функцией в GNU grep, вы можете захотеть изменить (?: ) to ( ) и расширенные выражения пользователя (-E):

grep -E '\w*(\.\w*)*@\w*(\.\w*)*\w{2,5}'

некоторые реализации расширенных выражений не поддерживают фигурные скобки { и }. Для переносимость вы можете использовать основные регулярные выражения.

использовать основные регулярные выражения escape ( и ) и оставить { и } убежал.

grep '\w*\(\.\w*\)*@\w*\(\.\w*\)*\w\{2,5\}'
1
отвечен Paweł Nadolski 2022-12-24 04:08

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх