Bonjour tout le monde et bon week-end,
J'essaie désespéremment d'écrire une expression régulière pour matcher une formule excel:
D'abord une simple référence à une cellule:
Ok ca, ca va, c'est pas bien violent.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 >>> test = re.compile(r'^(\D{1,4})(\d{1,4})$') >>> test.search('BA12').groups() ('BA', '12')
Maintenant je voudrais être capable de grouper de la même manière une formule excel simple du genre
BA12+BA13
ou encore AC12*B12+B13-B14
Donc un suite simple de références entrecoupés des opérateurs arithmétiques simple + - * / mais d'une longueur indéfinie
J'ai essayé ceci:
Mais ca ne marche pas vraimenent
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 >>> test = re.compile(r'^(\D{1,4})(\d{1,4})((\+|\-|\*|\/)(\D{1,4})(\d{1,4}))*$') >>> test.search('BA12').groups() ('BA', '12', None, None, None, None) >>> test.search('BA12+A22').groups() ('BA', '12', '+A22', '+', 'A', '22') >>> test.search('BA12+A22-C38').groups() ('BA', '12', '-C38', '-', 'C', '38')
Dans le deuxième test, il y'a un groupe "+22" que je ne veux pas. Quant au dernier, il a complétement ignoré le (+,A,22).
Quelqu'un aurait-il une solution à proposer au newbie que je suis?
Merci beaucoup!
R.
Partager