J'ai une fonction python27 qui cherche à matcher une RegEx dans un buffer:
def find_comp_lines(lines_to_parse, line_rule, verbose=False, offset=0):
"""
Find the line occurrences in the lines_to_parse buffer, based on a regex rule.
:param lines_to_parse: the buffer of the COMP file.
:param line_rule: the rule corresponding to the tag you want to find.
:param verbose: (optional) set this to True if you want to get more log.
:param offset: (optional) give this a value to apply an offset to the returned values (useful for nested nodes).
:type lines_to_parse: list of string
:type line_rule: string
:type verbose: bool
:type offset: int
:return: the line occurrence indexes.
:rtype: list of int
"""
# Init
res_list = []
for idx,line in enumerate(lines_to_parse):
if verbose:
print "line : %s ,line rule : %s " %(line,line_rule)
if re.match(line_rule,line) is not None:
# save line_number
# print idx
res_list.append(idx+offset)
return res_list
Jusqu'à présent elle marchait très bien, j'étais heureux. Mais vla-t-y-pas qu'à ma dernière RegEx
(\t{3}Inputs\s=\s)
construite ainsi
'(\t{' + str(n_lvl+1) + '}' + inputs_tag.replace(' ','\s') + ')'
avec n_lvl = 2
et inputs_tag = 'Inputs = '
, elle me choppe toutes les occurrences de 'Inputs ='
dans mon buffer (beaucoup), sans tenir compte de la consigne sur le nombre de tabulations. J'ai testé la regex dans tous les sens, dans mon code et sur le simulateur, rien à faire.