regex - Nested regular expressions (python) -
i'm having trouble writing regular expression following. have vector of literals (see re_lit) , find vectors in line of text i'm having difficulty writing regular expression. seem have issues parenthesis acting groups , not parenthesis.
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' % re_label re_vec = r'\[\s*(\s*%s\s*,?\s*)+\s*\]' % re_lit example string match:
test = 'c1 = blah([v3,v4,v5.r1,!v6,v7,x8,v9,v10], [v1, v2], [x5.r1])' expected results:
> print re.findall(re_vec, test) ['[v3,v4,v5.r1,!v6,v7,x8,v9,v10]', '[v1, v2]'] thank ahead of time help.
you can use following fix:
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.findall(re_vec, test) output of ideone demo:
['v3,v4,v5.r1,!v6,v7,x8,v9,v10', 'v1, v2']
Comments
Post a Comment