亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

正則表達式組選擇

正則表達式組選擇

Go
鳳凰求蠱 2021-03-30 17:15:30
我陷入了日志解析的困境。我在日志文件中有此行。一切都以行結尾\n[2018.07.10 00:30:03:125] VersionInfo\886[2018.07.10 00:30:03:109][TraceID: 8HRWSI105YVO91]->IncomingTime\16[2018.07.10 00:30:03:109][TraceID: 8HRWSI105YVO91]->IncomingData\397[2018.07.10 00:30:03:109][TraceID: 8HRWSI105YVO91]->ThreadID\8[2018.07.10 00:30:03:109][TraceID: 8HRWSI105YVO91]->RequestExecuteStart\16[2018.07.10 00:30:03:109][TraceID: 8HRWSI105YVO91]->RequestInfo\25[2018.07.10 00:30:03:109][TraceID: 8HRWSI105YVO91]->CheckUserInfo\139[2018.07.10 00:30:03:218]->Start RTS[2018.07.10 00:30:03:640][TraceID: 8HRWSI105YVO91]->StartExecuteTask\35[2018.07.10 00:30:03:749][TraceID: 8HRWSI105YVO91]->EndExecuteTask\36[2018.07.10 00:30:03:749][TraceID: 8HRWSI105YVO91]->RequestExecuteEnd\16[2018.07.10 00:30:03:749][TraceID: 8HRWSI105YVO91]->OutgoingData\26651我想分析組中的每一行-時間,traceid(如果存在)和塊名。要選擇日期時間(始終存在),我使用\[(.*?)\]。這是第一組。下一個必須為traceid(如果存在)。獲取分隔符(?:\[|->| )-[或->或。組選擇與第一個相同\[(.*?)\]。然后轉到第三組,其名稱為塊名([a-zA-Z ]+)-結尾的任何文本均不帶數字。我對如何連接所有內容完全感到困惑。我想要得到的是:第1組-日期時間第2組-Traceid | 零組3-塊名稱
查看完整描述

1 回答

?
蕭十郎

TA貢獻1815條經驗 獲得超13個贊

這應該可以解決問題:^\[(.*?)\](?:\[(.*?)\])?->([a-zA-Z ]+)。確保您使用的是多行標志。這是一個Python演示:


>>> for x in re.finditer(r'^\[(.*?)\](?:\[(.*?)\])?->([a-zA-Z ]+)', file, re.M):

    print(x.group(1), x.group(2), x.group(3))

2018.07.10 00:30:03:109 TraceID: 8HRWSI105YVO91 IncomingTime

2018.07.10 00:30:03:109 TraceID: 8HRWSI105YVO91 IncomingData

2018.07.10 00:30:03:109 TraceID: 8HRWSI105YVO91 ThreadID

2018.07.10 00:30:03:109 TraceID: 8HRWSI105YVO91 RequestExecuteStart

2018.07.10 00:30:03:109 TraceID: 8HRWSI105YVO91 RequestInfo

2018.07.10 00:30:03:109 TraceID: 8HRWSI105YVO91 CheckUserInfo

2018.07.10 00:30:03:218 None Start RTS

2018.07.10 00:30:03:640 TraceID: 8HRWSI105YVO91 StartExecuteTask

2018.07.10 00:30:03:749 TraceID: 8HRWSI105YVO91 EndExecuteTask

2018.07.10 00:30:03:749 TraceID: 8HRWSI105YVO91 RequestExecuteEnd

2018.07.10 00:30:03:749 TraceID: 8HRWSI105YVO91 OutgoingData

您可以使用來只給您實際的跟蹤ID ^\[(.*?)\](?:\[TraceID: (.*?)\])?->([a-zA-Z ]+)。


查看完整回答
反對 回復 2021-04-19
  • 1 回答
  • 0 關注
  • 276 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號