我在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
答案 0 :(得分:4)
如果要在正则表达式中使用(
字符,请将其转义:/\(/
。否则,它会打开一个组。未公开的团体会导致失败。
答案 1 :(得分:2)
与Nikita一样,(
是正则表达式语法的一部分,因此必须通过\
转义此字符。
当您只想分割一个字符时,最好使用字符串而不是正则表达式作为参数。使用split('\\')
,split(':')
等
请注意,该字符串也包含特殊字符,\'
可用作'
的转义,因此您必须加倍。