import regex
r=regex.compile('[ \t\n]*' # Skip leading whitespace
'\(' # Two alternative token
# styles
'\([^ \n\t"\'][^ \t\n]*\)'# A non-quotemark or WS
# character, up to the next
# whitespace
'\|' # or
'\("[^"]*"\)' # A double quote, followed
# by non-quotes, ending with
# another double quote
'\|' # or
"\('[^']*'\)" # A single quote, followed
# by non-quotes, ending with
# another single quote
'\)' # End of the alternatives
)
rl=regex.compile('[ \t\n]*' # Skip leading whitespace
'\(' # Two alternative token
# styles
'\([^ \n\t"\'][^,]*\)' # A non-quotemark or WS
# character, up to the next
# comma
'\|' # or
'\("[^"]*"\)' # A double quote, followed
# by non-quotes, ending with
# another double quote
'\|' # or
"\('[^']*'\)" # A single quote, followed
# by non-quotes, ending with
# another single quote
'\)' # End of the alternatives
)
def qsplit(s):
lst=[] ; pos=0
while (s!=""):
res=r.match(s, pos)
if res==-1: break
lst.append(r.group(1))
pos=r.regs[0][1]
return lst
def qsplit_list(s):
lst=[] ; pos=0
while (s!="" and pos < len(s)):
res=rl.match(s, pos)
if res==-1: break
lst.append(rl.group(1))
pos=rl.regs[0][1]+1
return lst