0

考虑一个简单的整数数字识别表达式,如下所示:

[0-9]+ printf("Integer");

现在,如果我将123其作为输入返回Integer,那就足够公平了。现在,如果我s123作为输入给出它会打印出来sIntegers默认情况下会打印无与伦比的内容ECHO,这对我来说很酷。但是为什么Integer还要打印。lex 不应该只返回s吗?我的输入被视为一个完整的字符串,对吗?我的意思是s123 is considered as a 1 full input?一旦s遇到不匹配的[0-9]+,那么它应该只是echo default unmatched value s123但是为什么sInteger?

4

1 回答 1

1

s123正则表达式正在匹配该字符串[0-9]+。如果你想匹配只包含整数的字符串,你应该尝试^[0-9]+$.

于 2013-10-23T15:10:30.307 回答