正则表达式:匹配空格连接的单词列表,不包括最后一个空格

时间:2010-04-23 14:33:19

标签: python regex

我如何匹配空格分隔的单词列表,后跟空格和一些可选数字? 我有这个:

>>> 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'}

1 个答案:

答案 0 :(得分:2)

我对你的双重捕获组感到有点困惑,以及你使用\w但想要匹配像&这样的非单词字符的事实(也许你的意思是{{1} },非空格,你说\S ...?),但是,也许......:

\w
相关问题