用正则表达式提取,红宝石中有一个衬里

时间:2014-02-14 15:30:47

标签: ruby regex

我想在"="之后提取单词。对于文档中的"GENEINFO=AGRN:",我可以使用正则表达式/GENEINFO=(.*?):/来提取所需的内容。但是,我想要返回的值只是"AGRN"。我可以用这个任务进行单行程吗?

4 个答案:

答案 0 :(得分:3)

尝试使用lookbehind和lookahead:

/(?<=GENEINFO=).*?(?=:)/

答案 1 :(得分:2)

您也可以使用match

'GENEINFO=AGRN:'.match(/GENEINFO=(.*?):/)[1]
#=> "AGRN"

也可以使用String#[]方法编写:

'GENEINFO=AGRN:'[/GENEINFO=(.*?):/, 1]
#=> "AGRN"

答案 2 :(得分:1)

"GENEINFO=AGRN:"[/(?<==).*(?=:)/]
# => "AGRN"

答案 3 :(得分:0)

你需要一个后视和前瞻。

pattern = /(?<=GENEINFO=)(.*?)(?=:)/
value = "GENEINFO=AGRN:".scan(pattern)

// [["AGRN"]]