2017-02-04 56 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返回一個只包含與正則表達式匹配的行的數組。