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