[]
соответствует любому символов внутри него, поэтому [\w+\W+]
соответствует любому символу, который является либо символом слова, либо не символом слова, либо +
, что явно не то, что выпредназначена.Точно так же, [^'un']
соответствует любому символу, который не относится к '
, u
или n
.
Решение вопроса, как вы его задали,is:
re.findall(r'(.*?)\s*un', "French! Le@ Mans - Quevilly Rouen un3.5 @1.23")
Демонстрация: https://regexr.com/40806
Это не жадное совпадение со всем, что сопровождается пробелами и un
, и возвращает эту первую часть обратно в группу.
Однако из вашего кода видно, что вы пытаетесь сопоставить и другие части строки, и из обсуждения в комментариях я думаю, что вы хотите:
get_reg = re.compile(r'(.*?)\s*(un\d+.\d+)\s*(@\d+.\d+)')
print(get_reg.findall("French! Le@ Mans - Quevilly Rouen un3.5 @1.23"))
Демонстрация: https://regexr.com/4085t
Я исключил пробелы между частями из соответствующих групп, хотя это отличается от вашего примера, потому что я подозреваю, что это будет более полезным для вас.