我想用正則表達式使用RegexSerDe解析網絡日誌。它通過將每個正則表達式組與表中的一列進行匹配來工作,如果正則表達式組爲空,則向該列分配一個空值。使用正則表達式匹配日誌文件行時的可選字段
我在匹配缺少字段的日誌行時遇到問題。有兩種排在該日誌:
<134>2016-10-23T23:59:59Z cache-iad2134 fastly[502801]: 52.55.94.131 "-" "-" Sun, 23 Oct 2016 23:59:59 GMT GET /apps/events/2016/10/11/3062653/?REC_ID=3062653&id=0 200
<134>2016-10-23T23:59:59Z cache-dfw1835 fastly[502801]: 1477267199
我寫的,與各個領域的第一類行的匹配以下正則表達式:
^(\\S+) (\\S+) (\\S+) (\\S+) "(\\S+)" "(\\S+)" (.*) (\\d{3})
但我?
發揮各地得到的正則表達式可以選擇忽略前4個字段後的字段,但不斷弄亂列。
有關如何在不更改組數的情況下添加?
的任何建議(以便解串器不會咳嗽)?或者任何其他方式來做到這一點,你會建議?
由於您沒有顯示帶有可選修飾符的正則表達式,我們應該如何告訴您您做錯了什麼?我能想到的唯一的事情就是你忘了在字段之間的空格也是可選的。 – Barmar