Как мне сопоставить разделенный пробелами список слов, за которым следуют пробел и некоторые необязательные числа?
У меня есть это:
>>> import re
>>> m = re.match('(?P<words>(\S+\s+)+)(?P<num>\d+)?\r\n', 'Foo Bar 12345\r\n')
>>> m.groupdict()
{'num': '12345', 'words': 'Foo Bar '}
Я бы хотел, чтобы группа слов не включала последние пробелы, но я не могу понять это. Я мог бы сделать .strip () на результат, но это не так весело :))
Некоторые строки для проверки и требуемый результат:
'Foo & Bar 555\r\n' => {'num': '555', 'words': 'Foo & Bar'}
'Hello World\r\n' => {'num': None, 'words': 'Hello World'}
'Spam 99\r\n' => {'num': 99, 'words': 'Spam'}
'Number 1 666\r\n' => {'num': 666, 'words': 'Number 1'}