python - 提取主机名、时间戳、HTTP 请求方法、URI 和协议
问题描述
我想从下面的响应中提取主机名、时间戳、HTTP 请求方法、URI 和协议
unicomp6.unicomp.net - - [01/Jul/1995:00:00:06 -0400] "GET /shuttle/countdown/ HTTP/1.0" 200 3985
199.120.110.21 - - [01/Jul/1995:00:00:09 -0400] "GET /shuttle/missions/sts-73/mission-sts-73.html HTTP/1.0" 200 4085
使用正则表达式。请让我知道我该怎么做
解决方案
我尝试了下面的代码
timestamp - r"\[\d+/\D+/.*\]
host name - (\d+\.\d+\.\d+\.\d+)\s* |(.+)\.(com|info|biz|tv|net)
status code - "\s\d{3}
但没有得到想要的结果。它说期望字符串或字节大小
regex = r'\b(\d+\.\d+\.\d+\.\d+)\s* |(.+)\.(com|info|biz|tv|net)'
sample_text = ("[unicomp6.unicomp.net - - [01/Jul/1995:00:00:06 -0400] "GET /shuttle/countdown/ HTTP/1.0" 200 3985, 199.120.110.21 - - [01/Jul/1995:00:00:09 -0400] "GET /shuttle/missions/sts-73/mission-sts-73.html HTTP/1.0" 200 4085]")
matches = re.findall(regex, sample_text)
hosts = []
for matchNum, match in enumerate(matches, start=1):
hosts.append(match.group()[1:27])
print(hosts)
推荐阅读
- css - iOS 15 Safari 浮动地址栏
- java - 如何使用 Spring Boot Maven 插件减小生成的 Docker 镜像的大小
- java - 如何避免大量 if else 条件和 if else 内部的一些条件
- javascript - 验证动态列表 Vue 中更改的输入
- css - 居中对齐模态 ReactJS
- swift - 如何在从 SwiftUI 屏幕获取或导航的情节提要中添加右栏按钮项?
- python-3.x - 如何在main函数python下调用循环
- node.js - 尝试使用 docker-compose 和 nodemailer 设置本地 docker-mailserver
- angular - 给定两个字符串 s1 和 s2,从 s1 中删除所有存在于 s2 中的字符。可以在Angular中解决吗?
- python - 使用 python wave 库添加或删除样本会产生静态?