2011-01-09 11 views
1


Rubyでsplit関数を使用する際に問題が発生しています。
/Users/simonprochazka/Downloads/pes_test_p00/lib/main.rb:28:正規表現の早期終了:/(/Ruby:分割:正規表現の早期終了

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

「irb(main):006:3> special = data [4] .split(/(/)」 これは問題の行ですか、あなたのソースに28行目がありますかわかりません。 – philosodad

+0

はい、それは彼です。 – Fallion

答えて

4

あなたが正規表現で(文字を使用したい場合は、それをエスケープ:/\(/。それ以外の場合は、グループを開きます。そして、閉じられていないグループは、障害の原因となる。

2

同様ニキータ、(は、正規表現構文の一部であるので、この文字は\でエスケープする必要が言った。
として代わりに正規表現をより有効に利用する文字列1つの文字で分割したい場合は、を使用してください。 0、split(':')など
この文字列には特殊文字も含まれており、\'はエスケープ文字が'であるため、2倍にする必要があります。