2013-10-08 26 views
0

我正在用lex编写计算器,需要用于识别双精度的正则表达式。它应该如何书写?它应该是类似于[[0 + [0-9][0-9]*].[0-9]+] + [1-9][0-9]*,但不能使它在lex中工作。正则表达式lex中的双精度值

样品输入任何双重或整数(将被转换为双)

+0

你能举一些例子输入吗?你希望你的模式匹配什么,你想要什么*不匹配? –

+0

词法分析器的Flex-lexer; Flex适用于ADobe/Apache UI框架。这在'Flex'的标签提示中提到。标记时请注意;谢谢 – JeffryHouser

+0

对不起。我无意中包含了它。 – SAD

回答

2

我看到了几个问题:

  1. 空间是正则表达式显著:删除它们。

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

  3. 句号(.)匹配任何东西,我相信你的意图是 只句号(小数点)匹配,所以你需要用反斜杠 逃脱它。

所以从这一点改变你的正则表达式

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

和调试。

此外,我不确定您是否理解加号字符(+)(意思是一个或多个字符重复)与管道字符(|)之间的区别,意思是 - 或。