[英]Regex lookahead in Python troubleshooting
試圖獲得一個正則表達式前瞻,它可以從數據集的每一行中提取 IP 地址。
示例數據(開始時拉取 IP 地址):
13.112.8.80 - rau5026 [21/Jun/2019:15:46:09 -0700] "HEAD /ubiquitous/transparent HTTP/1.1" 200 16928
159.253.153.40 - - [21/Jun/2019:15:46:10 -0700] "POST /e-business HTTP/1.0" 504 19845
136.195.158.6 - feeney9464 [21/Jun/2019:15:46:11 -0700] "HEAD /open-source/markets HTTP/2.0" 204 21149
我的前瞻對於那些帶有用戶名的條目(例如第一行中的 rau5026)非常有效,但對於沒有用戶名的條目包含第一個破折號(第二個條目,以“-”作為用戶名......所以對於第一個條目,它返回“13.112.8.80”,但第二個返回“159.253.153.40 -”
我正在使用的正則表達式是:
^.*(?=\s-\s)
您可以使用此正則表達式來匹配 IPv4 IP 地址。 您的正則表達式過於寬松。
(?:[0-9]{1,3}\.){3}[0-9]{1,3}
這將與以下內容匹配:
13.112.8.80
159.253.153.40
136.195.158.6
所有你需要的是:
^[^ ]+
它翻譯成:
從不是空格字符的每一行的開頭讀取所有內容。
它是一個具有可預測和已知格式的日志文件,因此簡單性更好。 您無需驗證每行的開頭是否為 IP 地址,因為它是有保證的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.