У меня есть строки, содержащие строки, такие как

bye-hi-hello-seeya

В частности, я хочу извлечь "привет", строку перед последним дефисом, или вы можете видеть ее как строку между последними двумя дефисами.

Просмотрел несколько примеров в Интернете, но, похоже, не нашел конкретных примеров, где мы смотрим на количество дефисов.

0
user7729135 19 Авг 2019 в 13:16

2 ответа

Лучший ответ

Мы можем использовать sub для извлечения текста между двумя последними дефисами.

sub(".*-(.*)-.*", "\\1", "bye-hi-hello-seeya")
#[1] "hello"

sub(".*-(.*)-.*", "\\1", "bye-hi-seeya")
#[1] "hi"

Строка перед последним дефисом может быть записана как

sub(".*?(\\w+)-\\w+$", "\\1", "bye-hi-hello-seeya")
#[1] "hello"
1
Ronak Shah 19 Авг 2019 в 10:27

Мы можем использовать word из stringr

library(stringr)
word(str1, -2, sep="-")
#[1] "hello"
word(str1, -3, sep="-")
#[1] "hi"

Данные

str1 <- "bye-hi-hello-seeya"
0
akrun 19 Авг 2019 в 18:06