簡體   English   中英

Python 故障排除中的正則表達式前瞻

[英]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 地址,因為它是有保證的。

https://regex101.com/r/f5kJf6/1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM