日志文件:
INFO:werkzeug:127.0.0.1 - - [20/Sep/2018 19:40:00] "GET /socket.io/?polling HTTP/1.1" 200 -
INFO:engineio: Received packet MESSAGE, ["key",{"data":{"tag1":12,"tag2":13,"tag3": 14"...}}]
我希望提取括号内包含关键词 "key"
的文本,而不是匹配下面正则表达式模式的所有出现。
这是我迄今尝试过的:
import re
with open('logfile.log', 'r') as text_file:
matches = re.findall(r'\[([^\]]+)', text_file.read())
with open('output.txt', 'w') as out:
out.write('\n'.join(matches))
这将输出与正则表达式匹配的所有出现。期望的输出到output.txt将如下所示:
"key",{"data":{"tag1":12,"tag2":13,"tag3": 14"...}}
print(re.findall(r'\[([^][]*"key"[^][]*)]', text_file.read()))
。 - Wiktor Stribiżewre.findall(r'\["key"([^\]]+)', text_file.read())
。这是你要找的吗? - JohanL*
(在此处作为文本书写时会使其加粗)。如果您也想捕获它,那么应该是re.findall(r'\[\*"key"\*([^\]]+)', text_file.read())
,或者您当然可以使用更一般的搜索“key”,就像接受的答案中所示。 - JohanL