2012-08-28 1 views
0

Я пытаюсь разобрать SIP-сообщения для всех SIP-кодов из диапазона 400-699 EXCEPT 401 (он используется для аутентификации клиента и заполняет наши журналы мусором).Дополнительная помощь PCRE - числовой диапазон, с одним вычитаемым числом

Сообщения выглядеть следующим образом (небольшое подмножество, есть огромное количество кодов, и я хотел бы избежать перечисления их всех):

SIP/2.0 400 Bad Request 
SIP/2.0 401 Unauthorized 
SIP/2.0 500 Internal Server Error 
SIP/2.0 604 Does not exist anywhere 

Вот мой текущий регулярное выражение (не работает, до сих пор пытаются понять это так, пожалуйста, извините, если это не самый изящный), я не могу показаться, чтобы выследить, поддерживает ли или нет PCRE символов класса вычитание, не находя кучу PHP информации

(?m)^SIP/2\.0\s(400|40[2-9]|4[1-90-9]|[5-60-90-9]).*$ 

. Любая помощь в получении этой работы будет действительно полезна. Спасибо вы !!!

Редактировать: только что изменил REGEX. Я ближе, но он по-прежнему включает 401 сообщение.

+0

(M)^SIP/2 \ .0 \ s (400 | 40 [2-9] | 4 [1-9] [0-9] | [5-6] [0-9] [0-9]). * $ Было регулярным выражением, которое я искал. – Matthew

ответ

2

[1-90-9] равно [0-9], кажется, вы что-то другое в вашем уме плз объяснить, что ваши ожидания

+0

Я пытаюсь выбрать любое число из 400-499, исключая 401. Таким образом, 400 задается буквально, тогда я создаю диапазон для 402-409. Затем я создаю диапазон для 410-499. Основываясь на объяснениях, которые я нашел, это правильный способ сделать это - http://www.regular-expressions.info/numericranges.html – Matthew

+0

(? M)^SIP/2 \ .0 \ s (400 | 40 [2-9] | 4 [1-9] [0-9] | [5-6] [0-9] [0-9]). * $ Кажется, разрешило проблему, я неправильно рассматривал ее как ты сказал. Спасибо! – Matthew