Как разделить на / но не на // в R? - PullRequest
3 голосов
/ 14 марта 2020

Скажите, у меня есть эта строка:

str <- "a//b/c"

Желаемый результат:

c("a//b", "c").

Итак, я хочу разделить на /, но не на //.

Что я пробовал:

После { ссылка } Я пытался:

  strsplit(split = "[[]^//[]]|/", x = "a//b/c", perl = TRUE)

(Для пользователей без R-пользователя : Нужно экранировать специальные символы в R, поэтому "[" становится "[[]", но не уверен, что это распространено во всех других языках.)

Ответы [ 2 ]

5 голосов
/ 14 марта 2020

Вы можете использовать

strsplit("a//b/c", "(?<!/)/(?!/)", perl=TRUE)

См. Демо R онлайн и демо regex .

Шаблон (?<!/)/(?!/) означает:

  • (?<!/) - местоположение, которому непосредственно не предшествует /
  • / - / char
  • (?!/) - a местоположение, за которым сразу не следует /
3 голосов
/ 14 марта 2020

Мы также можем SKIP шаблон и соответствовать другим

strsplit(str, "//(*SKIP)(*F)|/", perl = TRUE)[[1]]
#[1] "a//b" "c"   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...