Ruby:Split:正则表达式的过早结束

时间:2011-01-09 14:54:01

标签: ruby regex


我在Ruby中使用split函数时遇到问题 /Users/simonprochazka/Downloads/pes_test_p00/lib/main.rb:28:正则表达式的过早结束:/(/

 File.open(ARGV[0], "r") do |f|
   f.each_line do |line|
     data = line.split(/\t/)
     puts data[4]
     if data[4] =~ ["("]
     special = data[4].split(/(/)
     scores = special[0].split(/:/)
     puts data[4]
     else
     scores = data[4].split(/:/)
     end
     if special[1] != nil
     matches << Match.new(data[0], scores[0], scores[1], special[1].chop)
     else
     matches << Match.new(data[0], scores[0], scores[1])
     end
 end
 end

2 个答案:

答案 0 :(得分:4)

如果要在正则表达式中使用(字符,请将其转义:/\(/。否则,它会打开一个组。未公开的团体会导致失败。

答案 1 :(得分:2)

与Nikita一样,(是正则表达式语法的一部分,因此必须通过\转义此字符。
当您只想分割一个字符时,最好使用字符串而不是正则表达式作为参数。使用split('\\')split(':')等 请注意,该字符串也包含特殊字符,\'可用作'的转义,因此您必须加倍。