regex - 在 python 3 regex 中打印有效日志文件条目的列表
问题描述
我是python新手。我想打开一个文件 logs.txt 并匹配每一行(日志条目)中的所有 IP 地址。
然后我会打印带有 IP 地址的日志条目的数量/计数。到目前为止我所拥有的:
import re
#read the file
file = open("logile.txt")
lineList = []
for line in file:
match = re.search( r'^\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}', line )
if match:
print("IP found in this line is: ", match.group())
现在我想用这个 IP 地址打印日志条目的数量。如何将带有 IP 的每一行附加到我的 lineList 并打印计数?
解决方案
import re
file = open("logfile.txt")
lineList = []
count = 0
for ln, line in enumerate(file):
match = re.search( r'^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b', line )
if match:
count += 1
print("Match #{}: IP found in line {} is: {}".format(count, ln+1, match.group()))
lineList.append(match.group())
请注意正则表达式中的附加反斜杠和单词边界锚点,以防止错误匹配。此外,由于^
锚点,正则表达式只会匹配行首的 IP 地址。
推荐阅读
- android - 如何查找我是否有后台定位服务?我只使用 ACCESS_FINE_LOCATION 前台
- c - 预加载库函数调用者的行号
- php - 如何在php中将指数变量转换为完整的十进制变量?
- common-lisp - sdl2:load-bmp 当前工作目录的问题,common-lisp
- java - 程序中使用的事件监听器导致应用程序崩溃请告诉我使用 eventListener 的正确方法是什么
- node.js - 迁移:使用 TypeORM 的 queryrunner 代替 sql 语句
- spring-boot - @PropertyResource 在 Spring Boot 中不起作用
- python - 子进程打开管道时文件描述符错误
- java - 将 RxJava 与 LiveData 相结合
- shell - 这个 Windows 批处理文件会做什么