正则表达式为lex的双倍

时间:2013-10-08 20:51:38

标签: regex lex flex-lexer

我正在用lex编写计算器,需要一个正则表达式来识别双打。怎么写?它应该类似[[0 + [0-9][0-9]*].[0-9]+] + [1-9][0-9]*,但不能使它在lex中工作。

样本输入是任何double或整数(将被转换为double)

1 个答案:

答案 0 :(得分:2)

我看到一些问题:

  1. 空格在正则表达式中很重要:删除它们。

  2. 方括号([])表示字符类,而不是分组。使用括号进行分组。

  3. 句点字符(.)与任何内容匹配,我相信您的意图是 只匹配句点字符(小数点),所以你需要用它来转义它 反斜杠。

  4. 所以将正则表达式改为

    ((0+[0-9][0-9]*)\.[0-9]+)+[1-9][0-9]*
    

    并从那时开始调试。

    另外,我不确定你是否理解加号(+)(表示一次或多次重复)与管道符(|)之间的区别,这意味着非此即彼。