Ruby检查正则表达式

时间:2017-02-04 21:16:25

标签: ruby regex

这里的红宝石新手,

我想知道如何检查Ruby中的正则表达式。阅读了很多文档,但这很令人困惑。

我需要使用以下格式的行检查文件:

id: 123456 synset: word1,word2,etc

整数的位数并不重要,synset中有多少单词并不重要。

我想使用Regexp吗?有人可以举个例子吗?

2 个答案:

答案 0 :(得分: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" 

答案 1 :(得分: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返回仅与正则表达式匹配的行的数组。