0
我正在用lex编写计算器,需要用于识别双精度的正则表达式。它应该如何书写?它应该是类似于[[0 + [0-9][0-9]*].[0-9]+] + [1-9][0-9]*
,但不能使它在lex中工作。正则表达式lex中的双精度值
样品输入任何双重或整数(将被转换为双)
我正在用lex编写计算器,需要用于识别双精度的正则表达式。它应该如何书写?它应该是类似于[[0 + [0-9][0-9]*].[0-9]+] + [1-9][0-9]*
,但不能使它在lex中工作。正则表达式lex中的双精度值
样品输入任何双重或整数(将被转换为双)
我看到了几个问题:
空间是正则表达式显著:删除它们。
方括号([]
)表示一个字符类,而不是一个分组。使用括号进行分组。
句号(.
)匹配任何东西,我相信你的意图是 只句号(小数点)匹配,所以你需要用反斜杠 逃脱它。
所以从这一点改变你的正则表达式
((0+[0-9][0-9]*)\.[0-9]+)+[1-9][0-9]*
和调试。
此外,我不确定您是否理解加号字符(+
)(意思是一个或多个字符重复)与管道字符(|
)之间的区别,意思是 - 或。
你能举一些例子输入吗?你希望你的模式匹配什么,你想要什么*不匹配? –
词法分析器的Flex-lexer; Flex适用于ADobe/Apache UI框架。这在'Flex'的标签提示中提到。标记时请注意;谢谢 – JeffryHouser
对不起。我无意中包含了它。 – SAD