我需要使用 Python 解析一个字符串并提取 2 个用:
(冒号)分隔的标记,这些标记可以用单引号、双引号或不带引号括起来。
工作示例:
# <input string> -> <tuple that should return>
1) abc:def -> (abc, def)
2) abc:"def" -> (abc, def)
3) "abc":def -> (abc, def)
4) "abc":"def" -> (abc, def)
5) "a:bc":abc -> (a:bc, abc)
示例案例不起作用:
# <input string> -> <tuple that should return>
6) abc:"a:bc" -> (abc, a:bc)
7) "abcdef" -> (abcdef,)
使用的正则表达式是:
>>> import re
>>> rex = re.compile(r"(?P<fquote>[\'\"]?)"
r"(?P<user>.+)"
r"(?P=fquote)"
r"(?:\:"
r"(?P<squote>[\'\"]?)"
r"(?P<pass>.+)"
r"(?P=squote))")
我有 2 个问题,首先是样本案例 6) 和 7) 不起作用,其次是在rex.match
我希望所有组匹配但不是fquote
and之后squote
。我的意思是现在rex.match("'abc':'def').groups()
回来了("'", "abc", "'", "def")
,我只是想要("abc", "def")
。
有任何想法吗?
谢谢