如何从字符串中提取子字符串?

时间:2014-07-22 19:26:05

标签: r string substring

有些字符串显示以下格式

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

通常,它包含三个用,.分隔的部分。最后一个字符可以是普通字符,也可以是)。我想提取最后一部分。例如,我想根据上面的两个字符串生成以下两个字符串

JHI
(JH)

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

4 个答案:

答案 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)"