Regex lex中double的正则表达式
我在用lex写计算器,需要一个正则表达式来识别双精度。应该怎样写?它应该类似于Regex lex中double的正则表达式,regex,lex,flex-lexer,Regex,Lex,Flex Lexer,我在用lex写计算器,需要一个正则表达式来识别双精度。应该怎样写?它应该类似于[[0+[0-9][0-9]*].[0-9]+][1-9][0-9]*,但不能在lex中工作 示例输入为任意双精度或整数(将转换为双精度)我发现了一些问题: 空格在正则表达式中很重要:请删除它们 方括号([])表示字符类,而不是分组。使用括号进行分组 句点字符()匹配任何内容,我相信您的意图是 若要仅匹配句点字符(小数点),则需要使用 反斜杠 所以将正则表达式改为 ((0+[0-9][0-9]*)\.[0-9]+)+[
[[0+[0-9][0-9]*].[0-9]+][1-9][0-9]*
,但不能在lex中工作
示例输入为任意双精度或整数(将转换为双精度)我发现了一些问题:
[]
)表示字符类,而不是分组。使用括号进行分组
)匹配任何内容,我相信您的意图是
若要仅匹配句点字符(小数点),则需要使用
反斜杠((0+[0-9][0-9]*)\.[0-9]+)+[1-9][0-9]*
并从此点进行调试
另外,我不确定您是否理解加号(
+
)和管道字符(|
)之间的区别,加号字符表示一次或多次重复,管道字符表示或。您能给出一些输入示例吗?你希望你的模式匹配什么,你希望它不匹配什么;Flex适用于ADobe/ApacheUI框架。“Flex”的标记提示中提到了这一点。贴标签时请注意;谢谢,对不起。我不小心把它包括进去了。