2016-08-05 4 views

ответ

0

Проблема у Вас есть альтернатива "оператор" (|). Выреженное регулярное выражение соответствует «SAF» ИЛИ «MPCP-<4-digit number>».

Что вы хотите, это (?:SAF|MPCP)-\d{4}. \d соответствует любой цифре, а {4} означает «ровно 4 последнего токена» (в данном случае \d). Значение (?:) означает «не захватывающая группа».

Чтобы объяснить вашу проблему немного лучше, символ чередования ограничен текущей группой - если нет явной группы в скобках, весь шаблон используется как неявная группа.

+0

Спасибо Sebastian,: сделал работу :) – suj

0
(SAF|MPCP)-[0-9][0-9][0-9][0-9] 

Группа SAF и MPCP. Это должно решить вашу проблему.

+0

Пробовал это уже не везение – suj

0

Я думаю, что "(SAF|MPCP)-[0-9][0-9][0-9][0-9]" может решить вашу проблему, я не тестировался shell grep ; echo -e "SAF-1234\nMPCP-1234" | grep -E "(SAF|MPCP)-[0-9]{4}"

+0

Пробовал это уже, не повезло – suj

Смежные вопросы