2014-07-22 130 views
0

有一些字符串其示出了下面的模式如何从字符串中提取子字符串?

ABC, DEF.JHI 
AB,DE.(JH) 

它通常包括其与,.最后一个字符分离可以像)或者是正常字符或某物三个部分。我想提取最后一部分。例如,我想基于上述生成以下两个字符串

JHI 
(JH) 

在R中有没有办法做到这一点?

回答

1
library(stringr) 
str1 <- c("ABC, DEF.JHI","AB,DE.(JH)") 
str_extract(str1,perl('(?<=\\.).*')) 
#[1] "JHI" "(JH)" 

(?<=\\.)搜索.随后.*所有字符

1

可以使用strsplit刚刚拆分的.并提取第二元素。

str1 <- c("ABC, DEF.JHI","AB,DE.(JH)") 
unlist(lapply(strsplit(str1, "\\."), "[", 2)) 
# [1] "JHI" "(JH)" 
1

这里的另一种可能性:

sapply(strsplit(str1, "\\.\\(|\\.|\\)"), "[[", 2) 
1

Riffing上@ josiber的答案,你可以在.

str1 <- c("ABC, DEF.JHI","AB,DE.(JH)") 

gsub(".*\\.", "", str1) 
# [1] "JHI" "(JH)" 

编辑

如果之前删除字符串的一部分你的第三个元素并不总是在前面d由.提取最终部分

str1 <- c("ABC, DEF.JHI","AB,DE.(JH)", "ABC.DE, (JH)") 

gsub(".*[,.]", "" , str1) 
# [1] "JHI" "(JH)" " (JH)" 
相关问题