[英]Regex parse specific string in log [closed]
这是我的日志
2022-06-28 20:34:55.746 | INFO | product.views.product_view:list:28 - SEARCH | test serach3
2022-06-28 20:34:57.984 | INFO | product.views.product_view:list:28 - SEARCH | test serach1
2022-06-28 20:36:44.298 | INFO | product.views.product_view:list:28 - SEARCH | test serach1
2022-06-28 20:36:50.530 | INFO | product.views.product_view:list:28 - SEARCH | test serach2
2022-06-28 20:38:11.426 | INFO | product.views.product_view:list:28 - SEARCH | test serach2
2022-06-28 20:58:34.025 | SUCCESS | users.services:get_addresses:566 - successfully returned addresses for test.test@yahoo.com
我想在搜索后计算字符串 |
例如:
测试 serach2 - 2
测试 serach1 - 2
测试 serach3 - 1
但所有日志都不相同,第 6 行日志不同,只有在 SEARCH | 之后才能获得的最佳方法是什么? * 细绳 ? 使用正则表达式
您可以使用列表推导:
[match for line in string.split('\n') for match in line.split('- SEARCH | ')[1:]]
其中有两个循环:
- SEARCH |
并删除第一个元素输出:
['test serach3',
'test serach1',
'test serach1',
'test serach2',
'test serach2']
注意:如果您想计算列表中元素的出现次数,请查看这个详尽的 SO 答案>> 如何计算列表项的出现次数?
编辑。 使用正则表达式:
re.findall(r'(?<= - SEARCH \| ).*', string)
这将检查匹配部分之前是否有您所需的模式,而不匹配它。
在此处查看正则表达式演示。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.