【发布时间】:2014-02-09 20:09:32
【问题描述】:
我有以下格式的输入:
<integer>: <word> ... # <comment>
其中... 可以表示一个或多个<word> 字符串。
这是一个例子:
1: foo bar baz # This is an example
我想用正则表达式拆分这个输入并返回一个元组,其中包含每个单词后跟的整数。对于上面的例子,我想要:
(1, 'foo', 'bar', 'baz')
这是我尝试过的。
>>> re.match('(\d+):( \w+)+', '1: foo bar baz # This is an example').groups()
('1', ' baz')
我只得到整数和最后一个单词。如何获取正则表达式匹配的整数和所有单词?
【问题讨论】:
-
有什么理由需要用正则表达式来做这个?
-
@Decency 我正在使用正则表达式来验证示例输入,所以我想我也可以使用它来提取我需要的令牌。
-
问题是
groups()每组返回 一个 匹配。如果一个组进行了多次匹配,它只返回最后一个匹配(如您所见)。如果您想要全部内容,则必须使用 single 组,例如:(\d+):(( \w+)+)。然后你必须拆分外部组匹配的内容。