从字符串中提取部分行

时间:2014-02-25 15:13:59

标签: ruby string

我在Ruby中有一个字符串:

var = <<EOS

***************************
Test Spec:  somespecname 
Test Case:  get new status
EOS

我想在字符串的"Test Spec:"部分之后检索名称。所以在这种情况下,我希望结果为"somespecname"

我如何在Ruby中完成它?

4 个答案:

答案 0 :(得分:2)

这样做:

var.match(/Spec:\s*(\w+)/)[1] # => "somespecname"

答案 1 :(得分:2)

查看OP的示例,我假设有些情况下要检索的字符串可能包含非单词字符。这个正则表达式也会正确捕获它们。

var.match(/^Test Spec:\s*(.*?)\s*$/)[1]

答案 2 :(得分:1)

您可以使用String#[]String#strip方法:

var[/Test Spec:(.*)$/, 1].strip
# => "somespecname"

更新:使用lookbehind的替代表达式:

var[/(?<=Test Spec:).*$/].strip

答案 3 :(得分:1)

您可以使用拆分将字符串划分为数组元素,以便比正则表达式或匹配更容易参考。

  var = "\n\n\nTest Spec:  somespecname \nTest Case:  get new status"

  var.strip! 
  # => "Test Spec:  somespecname \nTest Case:  get new status" 
  new_var = var.split("\n")
  # => ["Test Spec:  somespecname ", "Test Case:  get new status"]
  test_spec_element = new_var[0]
  # => "Test Spec:  somespecname "
  desired_string = test_spec_element.split(":")[0]
  # => " somespecname "