大家,我有一個正則表達式的問題在這裏,我要分析此日誌文件,現在我想進去鍵和值的SESSION
匹配值
的問題是,這些日誌看起來並不相同,其中一些缺少包含'SESSION'的#字符,但它們都包含單詞SESSION,以便從變量塊開始,然而它們都以另一個總是包含單詞「POST」或「API CURL CALL」。
所以我必須使用量詞最有可能使其在這些字符串,但是當比賽這是一個鍵和值(由:)這兩個其他值的內部分離的任何套...
之間不顧什麼滿口只是談論它...我完全難住,所以我轉向你們在這個問題上的一些指導和幫助。 我們的目標是將這些低劣的日誌解析爲我實際可以快速閱讀並理解的內容。
我在PHP中創建一個類來做到這一點,並吐出一些漂亮的HTML格式的日誌。 這是日誌文件。
[05:40:40] ################
[05:40:40] #### SOURCE ####: /zalo/vn/interface.call.php
[05:40:40] #### REQUEST ####: /zalo/vn/interface.call.php
[05:40:40] #### Refer: http://app.com/zalo/vn/?v=1&adsid=d6e5f33e5a94d9fafaf15dc0cf4a1e5&sub_id=170100sf01435487523&sub_id1=232s5
[05:40:40] #### SESSION #####
[05:40:40] v: 1
[05:40:40] adsid: d6e5f33e5a94d93sfsf5dc0cf4a1e5
[05:40:40] sub_id: 799e12b08fa1edes1d7bgsg0506a6e9
[05:40:40] landingpage: http%3A%2F%2Fapp.com%2Fzalo%2Fvn%2Finterface.call.php
[05:40:40] c_id: da21bae82c02d1e2b8168d57cd3fbab7
[05:40:40] nId: 3943
[05:40:40] partner: Marvel
[05:40:40] country_code: 84
[05:40:40] country: VN
[05:40:40] url: http://app.com/zalo/vn/
[05:40:40] campaign_id: 1066
[05:40:40] source: web
[05:40:40] msisdn: 906346534
[05:40:40] Phone: 906346534
[05:40:40] #### POST ####
[05:40:40] action: subscribe
[05:40:40] Phone: 906346534
[05:40:40] ################
[05:40:40] #### API CURL CALL ####
理想情況下我還希望保留的這部分
v: 1
adsid: d6e5f33e5a94d93sfsf5dc0cf4a1e5
sub_id: 799e12b08fa1edes1d7bgsg0506a6e9
landingpage: http%3A%2F%2Fapp.com%2Fzalo%2Fvn%2Finterface.call.php
c_id: da21bae82c02d1e2b8168d57cd3fbab7
nId: 3943
partner: Marvel
country_code: 84
country: VN
url: http://app.com/zalo/vn/
campaign_id: 1066
source: web
msisdn: 906346534
Phone: 906346534
我可能需要某種形式的回顧後,先行組合。
(?=SESSION).*?(?<=POST)
沿着這些線條的東西,但也刪除了我不需要的實際SESSION和POST關鍵字的時間戳。
@michaJlS我已經嘗試了一些不同的事情,我已經看到了網上 '/(<= ## ### SESSION #####)。*?(?= \ [05:40:40 \] #### POST ####)/ si' 看起來像這樣看起來像他們可能工作,但我例如,我不能使用#*,我必須提供一個非常具體的字符串來啓動,這是一個問題,因爲即使我知道字符串將包含SESSION,但我不知道它是否以#開頭,只是SESSION一詞或 - SESSION例如... – JonnySerra
@michaJlS我也包括在內這個問題可能是一個更好的例子。 – JonnySerra
因此,你已經知道如何匹配這些塊,對吧?爲什麼不去除所有不需要的細節和線條? –