Я хочу использовать RE для анализа файла журнала и возврата идентификатора заказа, если он существует. Например:
Вот пример журнала
2012-07-19 12:05:04,288 [22] INFO AddQueueCommand [(null)] - Status set to Subscribed
2012-07-19 12:05:04,288 [23] INFO FooBarProviderFactory [(null)] - Missing Function : OrderId:102602 : Method:AddOrderToId : application:11
2012-07-19 12:05:04,288 [22] INFO AddQueueCommand [(null)] - Status set to Pending
2012-07-19 12:05:04,288 [23] INFO AddSubscription [(null)] - Subscription Added. OrderId:102603 : application:15
2012-07-19 12:05:04,288 [22] INFO AddQueueCommand [(null)] - Status set to Subscribed
Что я хочу сделать, так это использовать регулярное выражение, чтобы я мог анализировать компоненты сообщения журнала. Но когда существует «OrderId», я хочу иметь возможность анализировать идентификатор заказа #.
Вот что у меня есть до сих пор:
^
(?<before>.*)
(?<order>((?<=OrderId\:\s*)\d*))
(?<after>.*)
$
который отлично работает для анализа идентификаторов заказов для строк, в которых они есть, но терпит неудачу, когда в строке их нет. Я попытался добавить "?" ноль или единица в строке заказа, которая затем анализирует все строки, но никогда не анализирует фактический идентификатор заказа. Они всегда нулевые.
Надеюсь, кто-нибудь увидит, что я делаю неправильно. Спасибо!
(Я хочу, чтобы он анализировал каждую строку, потому что я собираюсь анализировать несколько значений идентификаторов из каждой строки, и они могут существовать или не существовать. Я хочу, чтобы он возвращал значение, если то, что я ищу, существует или null/пусто, если это не так) t существует. Он должен что-то возвращать для каждой строки. Это будет подключено к LogParser, чтобы мы могли запрашивать или регистрировать определенные заказы или другие переменные)