我在Ruby中有一个字符串:
var = <<EOS
***************************
Test Spec: somespecname
Test Case: get new status
EOS
我想在字符串的"Test Spec:"
部分之后检索名称。所以在这种情况下,我希望结果为"somespecname"
。
我如何在Ruby中完成它?
答案 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 "