Я работаю над скриптом Python, чтобы добавить в базу данных некоторые журналы IRC (формат energymech); Для этого мне нужно разбить строки на свои части (временная метка, пользователь, сообщение).Python regex не соответствует полной группе захвата
Я использую следующее регулярное выражение, чтобы получить строки текста, которые соответствуют:
normalline = re.compile('^\[[^\]]*(\d{2}):\d+:\d+\] <([^>]+)> (.*)$')
Проблема заключается в том, что он не правильно назначать первую группу захвата (он только возвращает первые 2 символы в группе).
Строка текста я тестирую его против [20:33:02] <user> random message here
Сценарий я использую для тестирования заключается в следующем:
import re
normalline = re.compile('^\[[^\]]*(\d{2}):\d+:\d+\] <([^>]+)> (.*)$')
print normalline.search('[20:33:02] <user> random message here').groups()
В результате я получаю ('20', 'user', 'random message here')
вместо ('20:33:02', 'user', 'random message here')
Я уверен, что я как-то возился с регулярным выражением, но для жизни меня не могу понять, как это сделать.
Что-то с вашей первой группой '^ \ [[^ \]] * (\ d {2}: \ d +: \ d +) \] <([^>] +)> (. *) $ '. – HamZa