Расширенное регулярное выражение Posix - отрицание нескольких строк, используя «^» - PullRequest
1 голос
/ 15 марта 2019

У меня есть старое приложение, которое использует регулярное выражение Extended POSIX для оценки кода возврата и принятия некоторых решений.

Примеры кодов возврата:

RETCODE = 0 SUCCESS
RETCODE = 3007 ERR3007
RETCODE = 3001 ERR3001
RETCODE = 13007 ERR13007
RETCODE = 3 ERR3
RETCODE = 1 ERR1

Я написал регулярное выражение для учета УСПЕХА, когда код возврата равен 0 ИЛИ 3007: ". * RETCODE = (0 | 3007). *"

Теперь мне нужно другое регулярное выражение для рассмотрения FAILURE, когда код возврата - что-то еще это означает, что когда код возврата не равен 0 или 3007.

ПРИМЕЧАНИЕ 1. Мое приложение рассматривает только «^» в качестве символа отрицания.

ПРИМЕЧАНИЕ 2. Я проверяю выражение с помощью команды "egrep"

Не могли бы вы помочь мне в этой ситуации?

Заранее спасибо.

Иван.

1 Ответ

0 голосов
/ 16 марта 2019

Расширенные регулярные выражения POSIX не поддерживают отрицательные косвенные утверждения. Однако дополнение к обычному языку снова само по себе является регулярным, поэтому для этого можно написать регулярное выражение, оно просто очень громоздко, даже если вы не стремитесь к точному отрицанию соответствия:

RETCODE = ([124-9][0-9]*|3|30|3[1-9][0-9]*|30[1-9][0-9]*|300|300[01-689][0-9]*|3007[0-9]+)[ ]
...