有一些字符串其示出了下面的模式如何从字符串中提取子字符串?
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)"