2014-07-22 4 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

риффов на ответ @ josiber ты мог удалить часть строки перед .

str1 <- c("ABC, DEF.JHI","AB,DE.(JH)") 

gsub(".*\\.", "", str1) 
# [1] "JHI" "(JH)" 

EDIT

В случае ваш третий элемент не всегда предшествует d на ., для извлечения конечной части

str1 <- c("ABC, DEF.JHI","AB,DE.(JH)", "ABC.DE, (JH)") 

gsub(".*[,.]", "" , str1) 
# [1] "JHI" "(JH)" " (JH)" 
Смежные вопросы