在循环中添加内容会导致语法错误

时间:2011-02-07 17:25:59

标签: ruby while-loop syntax-error

我正在尝试从Ruby中的文件中读取和处理行。

我有一个读取每一行的while循环。如果所有while循环都是分割线,它工作正常。当我添加一个正则表达式匹配子句时,我得到一个语法错误,意外的kEND  和语法错误,意外$ end,期待kEND

具体来说,这是“编译”

的代码
def validate
  invalid = 0
  f = File.open(ARGV[0], "r")
  while (line = f.gets)
    vals = line.split(",")
  end
end

if (ARGV[1] == "validate")
  validate
end

这段代码

def validate
  invalid = 0
  f = File.open(ARGV[0], "r")
  while (line = f.gets)
    vals = line.split(",")

    match0 = Regexp.new(/0-9]{1,4}/)
    unless (match0.match(vals[0]))
      invalid ++
    end
  end
end

if (ARGV[1] == "validate")
  validate
end

抛出错误

  

schedule.rb:10:语法错误,意外的kEND
  schedule.rb:18:语法错误,意外$ end,期待kEND

3 个答案:

答案 0 :(得分:3)

语法错误不是由正则表达式引起的。这是由于“++”。 Ruby没有“++”运算符。相反,你应该使用:

invalid += 1

答案 1 :(得分:1)

此外,你的正则表达式(字符类)中缺少一个括号。

/0-9]{1,4}/

应该阅读

/[0-9]{1,4}/

答案 2 :(得分:0)

没有C风格的递增/递减运算符。而是使用

invalid = invalid + 1

invalid += 1