如何提取输入的子串?

时间:2015-05-19 17:05:28

标签: regex r

如何从此输入中提取子字符串:

input = c("Inspecting sequence ID   NM_000775",    
          "Inspecting sequence ID   NM_001014975", 
          "Inspecting sequence ID   NM_001080484")  

得到:

output= c("NM_000775",  "NM_001014975", "NM_001080484")

5 个答案:

答案 0 :(得分:2)

你可以尝试

Response.AppendHeader("content-disposition", "?stop=true&" + "attachment; filename=" + fichierExport.NomFichier );

或者,如果在最后一个子字符串(要提取)之前正好有3个单词后跟空格

 sub('.*([A-Z]{2}\\_\\d+)$', '\\1', input)
 #[1] "NM_000775"    "NM_001014975" "NM_001080484"

答案 1 :(得分:2)

试试这个:

 gsub('.*\\s','',input)

答案 2 :(得分:1)

您可以使用stringr包:

library(stringr)

unlist(str_extract_all(input, "NM_\\d+"))
#[1] "NM_000775"    "NM_001014975" "NM_001080484"

正如akrun所提到的,你也可以通过简单地使用unlist()来避免str_extract()

str_extract(input, "NM_\\d+")
#[1] "NM_000775"    "NM_001014975" "NM_001080484"

使用的正则表达式NM_\\d+将匹配以NM_开头,后跟一个或多个数字的任何内容。

根据NM_是否特定于示例或代表您的实际问题,您可能希望将正则表达式概括为[A-Z]{2}_\\d+,或者如akrun所述,\\w+_\\d+

答案 3 :(得分:1)

sub("Inspecting sequence ID\\s+","",input)
[1] "NM_000775"    "NM_001014975" "NM_001080484"

答案 4 :(得分:0)

假设NM是识别条目的东西,另一种可能性是

gsub(".*\\s*(NM_\\d+)$", "\\1", input)