这里的红宝石新手,
我想知道如何检查Ruby中的正则表达式。阅读了很多文档,但这很令人困惑。
我需要使用以下格式的行检查文件:
id: 123456 synset: word1,word2,etc
整数的位数并不重要,synset中有多少单词并不重要。
我想使用Regexp吗?有人可以举个例子吗?
答案 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返回仅与正则表达式匹配的行的数组。