2008-10-07 105 views
1

我有这个工作定义:FLEX(词法分析器)正则表达式 - 重用定义

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

我不想不断重复的[A-ZA-Z]和[0-9],所以我做了两个新的定义

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

我怎么能改写的识别规则采用数字和有效定义?

我不知道该怎么做“老二”的比赛,我在这里坚持:

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

感谢。

编辑:我正在使用的整个测试程序:http://pastebin.com/f5b64183f

回答

3

它看起来像你真的想:

标志{} VALID({有效} | {DIGIT})*

[{VALID} {DIGIT}]解析为[[A-Za-z] [0-9]],这不是一个合法的构造。

+0

优秀。你整齐地指出了一点,不像我曾三次尝试过。所以我删除了我相当困惑的答案。对不起,没有upvote,但我用我所有的投票今天:( – 2008-10-07 15:38:01

-1

我认为这样做,但我无法测试它。你有样品数据吗? (?:[A-ZA-Z])

+(?:[0-9])+

+0

第一个正则表达式正在工作,但我想简化它。 – Kknd 2008-10-07 15:22:33