Python正则表达式角色

时间:2017-04-18 21:11:01

标签: python regex python-2.7

我正在尝试将旧程序从C#移植到Python,我需要使用一个匹配单词的正则表达式,只需引用单词和双引号单词。我已经有了正则表达式,如下所示,但是当我在IDLE中尝试它时它没有匹配。

>>> import re
>>> regex = re.compile("""[^\s"']+|"([^"]*)"|'([^']*)'""")
>>> regex.findall("foo bar")
[('', ''), ('', '')]

我使用三重引号字符串输入re,因为它除了包含反斜杠外还包含简单和双引号。

任何人都可以帮忙吗?

由于

1 个答案:

答案 0 :(得分:1)

re.findall返回捕获组的内容。由于foobar[^\s"']+匹配,因此所有捕获组都为空。

要获取匹配对象列表,请改用re.finditer

>>> list(regex.finditer('foo bar'))
[<_sre.SRE_Match object; span=(0, 3), match='foo'>, <_sre.SRE_Match object; span=(4, 7), match='bar'>]