2014-07-22 169 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)" 
相關問題