Это не работает просто потому, что Pattern.search()
не находит соответствия.Основываясь на рабочем примере, который вы имитируете, вам также необходимо сопоставить символы между именованными группами захвата, которые вы хотите использовать в выходном файле dict (чтобы весь шаблон возвращал совпадение).
Ниже приведен пример использования.*\n.*
как грубый способ преодоления разрыва между группами захвата путем сопоставления любых символов, не являющихся символом новой строки, после последней группы захвата, затем сопоставления с новой строкой, а затем сопоставления с любыми символами без перевода строки, которые предшествуют следующему захвату.группа (вы, вероятно, хотите быть более точным, чем это, но это демонстрирует проблему).Я включил только ваши первые 3 группы, потому что я не следовал тому, что вы хотели с помощью регулярного выражения в вашей <clash_status>
группе.
import re
text = '\n\n\nName: Clash1\nDistance: -1.274m\nImage Location: navis_raport_txt_files\\cd000001.jpg\nHardStatus: New\nClash Point: 1585.236m, 193.413m'
clash_data = re.compile(r'(?P<clash_number>Clash\d+).*\n.*'
r'(?P<clash_depth>\d.\d{3}).*\n.*'
r'(?P<image_location>cd\d+.jpg)', re.I | re.VERBOSE)
result = clash_data.search(text).groupdict()
print(result)
# OUTPUT
# {'clash_number': 'Clash1', 'clash_depth': '1.274', 'image_location': 'cd000001.jpg'}