Есть ли способ сопоставить регулярное выражение справа налево? То, что я ищу, это регулярное выражение, которое получает
MODULE WAS INSERTED EVENT
LOST SIGNAL ON E1/T1 LINK OFF
CRC ERROR EVENT
CLK IS DIFF FROM MASTER CLK SRC OF
с этого входа
CLI MUX trap received: (022) CL-B MCL-2ETH MODULE WAS INSERTED EVENT 07-05-2010 12:08:40
CLI MUX trap received: (090) IO-2 ML-1E1 EX1 LOST SIGNAL ON E1/T1 LINK OFF 04-06-2010 09:58:58
CLI MUX trap received: (094) IO-2 ML-1E1 EX1 CRC ERROR EVENT 04-06-2010 09:58:59
CLI MUX trap received: (009) CLK IS DIFF FROM MASTER CLK SRC OFF 07-05-2010 12:07:32
Если бы я мог сделать сопоставление справа налево, я мог бы написать что-то вроде всего справа (EVENT | OFF) до второго появления более чем одного пробела [] +
Лучшее, что мне удалось сегодня, - это получить все от (022) до СОБЫТИЯ с помощью регулярного выражения
CLI MUX trap received: \([0-9]+\)[ ]+(.*[ ]+(EVENT|OFF))
Но это не совсем то, что я хотел:)
edit: На каком языке это? На самом деле это строка конфигурации для фильтра, который у нас есть, но я предполагаю, что она использует стандартную библиотеку GNU C Regex.
edit2: Мне нравятся ответы о сокращении по длине, но, вероятно, Amarghosh был больше, чем я искал. Не знаю, почему я не думал о том, чтобы просто отрезать по длине, как:
^.{56}(.{39}).*$
Супер спасибо за быстрые ответы ...