我正在尝试将旧程序从C#移植到Python,我需要使用一个匹配单词的正则表达式,只需引用单词和双引号单词。我已经有了正则表达式,如下所示,但是当我在IDLE中尝试它时它没有匹配。
>>> import re
>>> regex = re.compile("""[^\s"']+|"([^"]*)"|'([^']*)'""")
>>> regex.findall("foo bar")
[('', ''), ('', '')]
我使用三重引号字符串输入re,因为它除了包含反斜杠外还包含简单和双引号。
任何人都可以帮忙吗?
由于
答案 0 :(得分:1)
re.findall
返回捕获组的内容。由于foo
和bar
与[^\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'>]