2017-02-04 59 views
0

这里新来的红宝石,Ruby检查正则表达式

我想知道如何检查Ruby中的正则表达式。阅读大量的文件,但它很混乱。

我需要在此格式线检查文件:

id: 123456 synset: word1,word2,etc 

的整数位数不要紧,有多少话是同义词集合不要紧都不是。我想假设使用Regexp?有人能给我一个例子吗?

+0

如果这些都不重要,那么*做什么? – Jan

+0

你是什么意思_check_文件?检查它们是否属实,或者你需要提取这些行? –

+0

只有'id:'+数字和空格+'synset:'+单词用逗号分隔 – thestateofmay

回答

1

正则表达式将方便在这里:

str = 'id: 123456 synset: word1,word2,etc' 
m = str.match(/\Aid: (\d+) synset: (.+)\z/) 
id, synset = m.captures 
id 
=> "123456" 
synset 
=> "word1,word2,etc" 

或者你可以将字符串分割成一个数组:

arr = str.split 
_, id, _, synset = arr 
id 
=> "123456" 
synset 
=> "word1,word2,etc" 
0

./file1.rb:

id: 123456 synset: word1,word2 
id: 123456 synset: word1,word2 
a;sdlkfjasdlkfj 
id: 123456 synset: word1,word2 

./file2.rb

file = File.new('./file1.rb','r+') 
p file.grep(/^id: \d+ synset: (\w+,?)+$/) 
#[ 
# id: 123456 synset: word1,word2, 
# id: 123456 synset: word1,word2, 
# id: 123456 synset: word1,word2" 
#] 

使用Enumerable#grep返回一个只包含与正则表达式匹配的行的数组。