Журнальный файл:
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"...}}]
Меня интересует извлечение только текста из with в скобках, который содержит ключевое слово "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()))
, если"key"
может появиться где угодно внутри квадратных скобок. - person Wiktor Stribiżew   schedule 21.09.2018re.findall(r'\["key"([^\]]+)', text_file.read())
. Это то, что вы ищете? - person JohanL   schedule 21.09.2018*
перед вашей фразойkey
(что делает ее жирной, когда она написана здесь в виде текста. Если вы хотите уловить и это, это будетre.findall(r'\[\*"key"\*([^\]]+)', text_file.read())
, или вы, конечно, можете использовать более общий поиск дляkey
как в принятом ответе. - person JohanL   schedule 21.09.2018