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
squote
rex.match("'abc':'def').groups()
("'", "abc", "'", "def")
("abc", "def")
何か案は?
ありがとう