【问题标题】:flex (lexical analyzer) regular expressions - Reusing definitionsflex(词法分析器)正则表达式 - 重用定义
【发布时间】:2008-10-07 15:15:58
【问题描述】:

我有这个工作定义:

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

我不想一直重复 [a-zA-Z] 和 [0-9],所以我做了两个新定义

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

如何重写 IDENTIFIER 规则以使用 DIGIT 和 VALID 定义?

我不知道如何进行“第二”匹配,我被困在这里:

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

谢谢。

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

【问题讨论】:

    标签: regex flex-lexer lexical-analysis


    【解决方案1】:

    看起来你真的想要:

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

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

    【讨论】:

    • 优秀。你巧妙地抓住了重点,不像我尝试了三次。所以我删除了我相当混乱的答案。抱歉没有投票,但我今天的票都用完了:(
    • @David Arno:明天随时回来并提出我的答案。 :-)
    【解决方案2】:

    我认为这会做到,但我无法测试它。你有样本数据吗?

    (?:[a-zA-Z])+(?:[0-9])+
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-28
      • 2016-07-21
      相关资源
      最近更新 更多