我正在学习正则表达式,以便在lex程序中使用它们.我在这里看到,在正则表达式中:
'*' matches 0 or more occurances of pattern
'?' matches 0 or 1 occurance of the pattern
通过这个我有点困惑.我的意思是:
如果我们可以用'*'匹配0或更多,那我们为什么要使用'?' 元字符?
我们将Float定义为: FL [0-9]*"."[0-9]+
我们可以将其定义为:FL [0-9]?"."[0-9]+
对于0.999或.999等数字(即,在小数点之前只有一位数的数字.
)?
任何人都可以解释一下吗?提前感谢你:).
如果要匹配0,1,2,3,4,5,6或更多次出现,请使用*
.
如果你只是想匹配0或1次出现,使用?
.
例如,请考虑以下内容: "________starts with whitespace"
如果我想匹配该文本开头的所有下划线,但我不想要求它们在那里(它们是可选的),我会使用_*
.
相比之下,如果我只是匹配一个可选的单曲 +
(比如说)"+44 20 1234 5678"
,我会使用\+?
(一个+
带有?
后面的文字).那只会匹配单个+
或没有,它不会匹配多个 +
字符.