有一些字符串其示出了下面的模式如何從字符串中提取子字符串?
ABC, DEF.JHI
AB,DE.(JH)
它通常包括其與,
和.
最後一個字符分離可以像)
或者是正常字符或某物三個部分。我想提取最後一部分。例如,我想基於上述生成以下兩個字符串
JHI
(JH)
在R中有沒有辦法做到這一點?
有一些字符串其示出了下面的模式如何從字符串中提取子字符串?
ABC, DEF.JHI
AB,DE.(JH)
它通常包括其與,
和.
最後一個字符分離可以像)
或者是正常字符或某物三個部分。我想提取最後一部分。例如,我想基於上述生成以下兩個字符串
JHI
(JH)
在R中有沒有辦法做到這一點?
library(stringr)
str1 <- c("ABC, DEF.JHI","AB,DE.(JH)")
str_extract(str1,perl('(?<=\\.).*'))
#[1] "JHI" "(JH)"
(?<=\\.)
搜索.
隨後.*
所有字符
可以使用strsplit
剛剛拆分的.
並提取第二元素。
str1 <- c("ABC, DEF.JHI","AB,DE.(JH)")
unlist(lapply(strsplit(str1, "\\."), "[", 2))
# [1] "JHI" "(JH)"
這裏的另一種可能性:
sapply(strsplit(str1, "\\.\\(|\\.|\\)"), "[[", 2)
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)"