2008-10-07 3 views
1

j'ai cette définition de travail:flex (analyseur lexical) expressions régulières - définitions Réutiliser

IDENTIFIER [a-zA-Z][a-zA-Z0-9]* 

Je ne veux pas continuer à répéter le [a-zA-Z] et [0-9], donc J'ai fait deux nouvelles définitions

DIGIT [0-9] 
VALID [a-zA-Z] 

Comment puis-je réécrire la règle de IDENTIFIER utiliser la DIGIT et définitions VALABLE?

Je ne sais pas comment faire la "deuxième" match, je suis coincé ici:

IDENTIFIER {VALID}[{VALID}{DIGIT}]* // This syntax is incorrect 

Merci. Editer: Le programme de test complet que j'utilise: http://pastebin.com/f5b64183f

Répondre

3

On dirait que vous voulez vraiment:

IDENTIFIER {VALIDE} ({VALIDE} | {DIGIT}) *

[{VALID} {DIGIT}] se résout à [[A-Za-z] [0-9]] qui n'est pas une construction légale.

+0

Excellent. Vous avez parfaitement réussi, contrairement à moi qui a pris trois tentatives. J'ai donc supprimé ma réponse plutôt confuse. Désolé pour aucun upvote, mais je suis utilisé tous mes votes pour aujourd'hui :( –

+0

@David Arno: N'hésitez pas à revenir demain et cogner ma réponse. :-) –

+0

@Ben, convenablement heurté :) –

-1

Je pense que ça va le faire mais je ne peux pas le tester. avez-vous des exemples de données? (?: [A-zA-Z])

+ (: [0-9]) +

+0

La première regex fonctionne, mais je veux la simplifier. – Kknd

Questions connexes