有些字符串显示以下格式
ABC, DEF.JHI
AB,DE.(JH)
通常,它包含三个用,
和.
分隔的部分。最后一个字符可以是普通字符,也可以是)
。我想提取最后一部分。例如,我想根据上面的两个字符串生成以下两个字符串
JHI
(JH)
在R中有没有办法做到这一点?
答案 0 :(得分:1)
library(stringr)
str1 <- c("ABC, DEF.JHI","AB,DE.(JH)")
str_extract(str1,perl('(?<=\\.).*'))
#[1] "JHI" "(JH)"
(?<=\\.)
搜索.
后跟.*
所有字符
答案 1 :(得分:1)
您可以使用.
拆分strsplit
并提取第二个元素。
str1 <- c("ABC, DEF.JHI","AB,DE.(JH)")
unlist(lapply(strsplit(str1, "\\."), "[", 2))
# [1] "JHI" "(JH)"
答案 2 :(得分:1)
这是另一种可能性:
sapply(strsplit(str1, "\\.\\(|\\.|\\)"), "[[", 2)
答案 3 :(得分:1)
在@ josiber的回答中,您可以删除.
str1 <- c("ABC, DEF.JHI","AB,DE.(JH)")
gsub(".*\\.", "", str1)
# [1] "JHI" "(JH)"
修改强>
如果您的第三个元素并不总是以.
开头,则提取最终部分
str1 <- c("ABC, DEF.JHI","AB,DE.(JH)", "ABC.DE, (JH)")
gsub(".*[,.]", "" , str1)
# [1] "JHI" "(JH)" " (JH)"