引号之间的子串内容

时间:2016-06-03 08:06:56

标签: regex r substring

在DF中,我有不同长度的列条目,如下所示:

tmp_ezg.\"dr_HE_10691\"tmp_ezg.\"dr_MV_0110200016\"tmp_ezg.\"dr_MV_0111290017\"

我怎样才能最好地在引号之间对哪些内容进行子串?

我的想法:

substring(DF$name, 10)

由于引号的内容长度不同,我无法为substring()提供停止的值。

是否有可能仅在某些符号(即引号)之间进行子串?

2 个答案:

答案 0 :(得分:2)

例如

x <- c('tmp_ezg.\"dr_HE_10691\"' , 
       'tmp_ezg.\"dr_MV_0110200016\"' , 
       'tmp_ezg.\"dr_MV_0111290017\"')
res <- sub('.*?"([^"]+)"', "\\1", x)
print(res, quote=F)
# [1] dr_HE_10691     
# [2] dr_MV_0110200016
# [3] dr_MV_0111290017

......如果我没有弄错的话。

答案 1 :(得分:2)

要分隔引号之间的内容(假设每个条目中只有两个),您只需将字符串拆分为\\\"(转义后的反斜杠和引号):

y <- strsplit(x, split = "\\\"")

如果所有条目都以引号结尾,则会显示包含两个值的条目列表,每个条目中的第二个值都是您的字符串。

[[1]]
[1] "tmp_ezg."         "dr_HE_10691"
[[2]]
[1] "tmp_ezg."         "dr_MV_0110200016"
[[3]]
[1] "tmp_ezg."         "dr_MV_0111290017"