我想使用 RE 解析日志文件并返回 orderid(如果存在)。例如:
这是一个示例日志
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”时,我希望能够解析 orderid #。
这是我到目前为止所拥有的:
^
(?<before>.*)
(?<order>((?<=OrderId\:\s*)\d*))
(?<after>.*)
$
这对于解析具有它们的行的 orderid 非常有用,但是当行没有它们时它会失败。我尝试添加“?” 零或一到订单行,然后解析所有行,但从不解析实际的 orderid。它们始终为空。
希望有人能看到我做错了什么。谢谢!
(我希望它解析每一行,因为我将解析每一行中的多个 id 值,它们可能存在也可能不存在。如果我正在搜索的内容存在,我希望它返回该值,如果不存在则返回 null/empty t 存在。它需要为每一行返回一些东西。这将被插入到 LogParser 中,以便我们可以查询或记录特定订单或其他变量)