Ruby Regexp的情况

时间:2013-04-21 16:38:57

标签: ruby regex

我正在尝试读取文本文件,将内容与regexp匹配,然后将匹配写入另一个文件。我有代码:

names = File.read('myfile.txt')
open('myfile1.txt', 'a') { |f|
  f.puts names[/" name="(\w+)" title="First/]
}

我得到" name="firstname" title="First,但我只需要写firstname。我该如何捕捉这些内容?

2 个答案:

答案 0 :(得分:1)

您应该能够使用MatchData#[]方法从正则表达式(括号内的部分)中选择第一个捕获组。但首先,您需要一个表示匹配的MatchData实例,您可以通过更改代码在RegExp本身上调用.match来获得该匹配。例如:

names = File.read('myfile.txt')
open('myfile1.txt', 'a') { |f|
  if match = /" name="(\w+)" title="First/.match(names)
    f.puts match[1]
  end
}

答案 1 :(得分:1)

更改

names[/" name="(\w+)" title="First/]

names[/" name="(\w+)" title="First/, 1]