Как извлечь подстроку из строки?

Вопрос:

Есть несколько строк, которые показывают следующий шаблон

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

Как правило, он включает в себя три секции, которые разделены , и . Последний символ может быть либо нормальным, либо sth like ). Я хотел бы извлечь последнюю часть. Например, я хотел бы создать следующие две строки, основанные на приведенных выше

JHI
(JH)

Есть ли способ сделать это в R?

Ответ №1
library(stringr)
str1 <- c("ABC, DEF.JHI","AB,DE.(JH)")
str_extract(str1,perl('(?<=\\.).*'))
#[1] "JHI"  "(JH)"

(?<=\\.) искать . а затем .* все символы

Ответ №2

Вы можете просто разделить на . используя strsplit и извлеките второй элемент.

str1 <- c("ABC, DEF.JHI","AB,DE.(JH)")
unlist(lapply(strsplit(str1, "\\."), "[", 2))
# [1] "JHI"  "(JH)"

Ответ №3

Здесь другая возможность:

sapply(strsplit(str1, "\\.\\(|\\.|\\)"), "[[", 2)

Ответ №4

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

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

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

РЕДАКТИРОВАТЬ

Если вашему третьему элементу не всегда предшествует a . , для извлечения финальной части

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

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

Оцените статью
TechArks.Ru
Добавить комментарий