1

我不明白为什么这段代码在字符串中找不到模式。我打开一个文件并读取文件中的每一行并用“/t”分割它,然后我尝试找到一个模式。但它没有找到它。输入文件:

1553338_at/C1orf55  225142_at/JHDM1D    0.9075880395022964  
1553338_at/C1orf55  230778_at/---   0.9133682114964662

代码:

input=File.open("/lalal/lalal.txt","r")

input.each{|line|

    keys=line.split("\t")
    puts(keys[1])

    a=/---/.match(keys[1])
    puts(a.class)    

}

输出:

225142_at/JHDM1D
NilClass
230778_at/---
NilClass

"---"我不明白为什么它找不到230778_at/---?提前致谢

4

2 回答 2

1
- 

是一个正则表达式保留符号。利用

\-

更好的是,将匹配线更改为

a = /\-{3}/.match(keys[1])
于 2013-05-23T13:33:50.253 回答
0

它确实匹配(在 Ruby 2.0.0 上)。

/---/.match("230778_at/---")
# => #<MatchData "---">
于 2013-05-23T13:46:16.073 回答