[英]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.