我正在学习正则表达式,并计划在lex程序中使用它们。我在这里看到:这里,在正则表达式中:
因此,我有些困惑:
如果我们可以通过'*'匹配0个或多个,那么为什么要使用'?'元字符?
我们将浮点数定义为:
我们是否可以将其定义为:
请问有谁能解释一下吗?谢谢!
'*'
匹配模式的0个或多个出现'?'
匹配模式的0个或1个出现因此,我有些困惑:
FL [0-9]*"。"[0-9]+
FL [0-9]?"。"[0-9]+
以匹配类似于0.999或.999等(即,在小数点。
之前只有一位数字的数字)?
FL [0-9]?"。"[0-9]+
可以用于查找浮点数吗? - Vedant Terkar23.5
,因为你只允许在.
之前有一个单独的数字。所以你可能想要在那里使用*
而不是?
,这样你就可以匹配.
之前的任意数量的数字。 - T.J. CrowderFL [0-9]*"."[0-9]+
对我有效。但是,如果我只想接受.
前面的一个数字,就像你说的那样。那么,FL [0-9]?"."[0-9]+
可以解决这个问题吗? - Vedant Terkar[0-9]?
意味着“零个或一个数字,但不是两个或更多”。[0-9]*
意味着“零个或多个数字(没有限制,可能有42个)”。请注意,某些语言要求如果数字在0和1之间,则浮点数必须在.
之前带有前导0
(0.5
而不是.5
),而其他语言则不需要。我不知道您要验证哪种类型的数字。 - T.J. Crowder