Я пытаюсь использовать пакет stringi
для разделения на разделитель (возможно, разделитель повторяется), но сохраняйте разделитель. Это похоже на этот вопрос, который я задал луны назад: R split on delimiter (split) keep the delimiter (split), но разделитель можно повторить. Я не думаю, что база strsplit
может обрабатывать этот тип регулярных выражений. Пакет stringi
может, но я не могу понять, как форматировать регулярное выражение, оно разбивается на разделитель, если есть повторы, а также не оставлять пустую строку в конце строки.Сплит сохранить повторный разделитель
Решения Base R, stringr, stringi и т. Д. Все решения приветствуются.
Поздний проблема возникает потому, что я использую жадный *
на \\s
но пространство не garunteed, так что я мог думать только оставить его в:
MWE
text.var <- c("I want to split here.But also||Why?",
"See! Split at end but no empty.",
"a third string. It has two sentences"
)
library(stringi)
stri_split_regex(text.var, "(?<=([?.!|]{1,10}))\\s*")
# Итоговом
## [[1]]
## [1] "I want to split here." "But also|" "|" "Why?"
## [5] ""
##
## [[2]]
## [1] "See!" "Split at end but no empty." ""
##
## [[3]]
## [1] "a third string." "It has two sentences"
# желаемого результата
## [[1]]
## [1] "I want to split here." "But also||" "Why?"
##
## [[2]]
## [1] "See!" "Split at end but no empty."
##
## [[3]]
## [1] "a third string." "It has two sentences"
Не могли бы вы объяснить, что такое '* SKIP' и' * F', и какие роли они играют в регулярном выражении? –
@Josh O'Brien Спасибо за комментарии. На самом деле, '* SKIP'' * F' не нужны. Я использовал его ранее, когда я работал над кодом и не проверял его впоследствии. – akrun
@akrun хорошая переработка. –