import re
RE_LABEL1 = r'[cvx]\d+(?![.]r)'
RE_LABEL2 = r'v\d+\.r\d+'
RE_LABEL = r'%s|%s' % (RE_LABEL1, RE_LABEL2)
RE_LIT = r'\!?%s),?\s*' % RE_LABEL
RE_VEC = r'(?:(?:%s)+' % RE_LIT
test = '[v3,v4,v5.r1,!v6,v7,x8,v9,v10], [v1, v2]'
print RE_VEC # it is bad
print re.findall(RE_VEC, test)
print re.findall(r'(?:(?:\!?[cvx]\d+(?![.]r)|v\d+\.r\d+),?\s*)+', test)