我正在用lex编写计算器,需要一个正则表达式来识别双打。怎么写?它应该类似[[0 + [0-9][0-9]*].[0-9]+] + [1-9][0-9]*
,但不能使它在lex中工作。
样本输入是任何double或整数(将被转换为double)
答案 0 :(得分:2)
我看到一些问题:
空格在正则表达式中很重要:删除它们。
方括号([]
)表示字符类,而不是分组。使用括号进行分组。
句点字符(.
)与任何内容匹配,我相信您的意图是
只匹配句点字符(小数点),所以你需要用它来转义它
反斜杠。
所以将正则表达式改为
((0+[0-9][0-9]*)\.[0-9]+)+[1-9][0-9]*
并从那时开始调试。
另外,我不确定你是否理解加号(+
)(表示一次或多次重复)与管道符(|
)之间的区别,这意味着非此即彼。