【问题标题】:Regexp in lex. Why does flex behave this waylex 中的正则表达式。为什么 flex 会这样
【发布时间】:2013-10-23 14:23:58
【问题描述】:

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

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

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

【问题讨论】:

    标签: regex lex


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2014-07-13
      • 1970-01-01
      • 1970-01-01
      • 2011-01-03
      • 1970-01-01
      • 2010-09-22
      • 1970-01-01
      • 2018-07-01
      • 1970-01-01
      相关资源
      最近更新 更多