我如何匹配空格分隔的单词列表,后跟空格和一些可选数字? 我有这个:
>>> 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 '}
我希望单词group不包含最后一个空格,但我无法想出这个。我可以对结果做一个.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'}
答案 0 :(得分:2)
我对你的双重捕获组感到有点困惑,以及你使用\w
但想要匹配像&
这样的非单词字符的事实(也许你的意思是{{1} },非空格,你说\S
...?),但是,也许......:
\w