Разделить строку, используя пробел и заглавную букву - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь разбить мою строку на несколько строк. Строка выглядит так:

x <- c("C 10.1 C 12.4","C 12", "C 45.5 C 10")  

Фрагмент кода:

strsplit(x, "//s")[[3]]

Результат:

"C 45.5 C 10"

Ожидаемый результат: разбить строку на несколько строк следующим образом:

"C 10.1"
"C 12.4"
"C 12"
"C 45.5"
"C 10" 

Вопрос в том, как разбить строку?

Подсказка: в нашем случае есть пробел, а затем символ "C". Кто-нибудь, кто знает, как это сделать?

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Несколько более сложное выражение, но более легкое для регулярных выражений:

unlist(
  sapply(
    strsplit(x, " ?C"),
    function(x) {
      paste0("C", x[nzchar(x)])
    }
  )
)
"C 10.1" "C 12.4" "C 12"   "C 45.5" "C 10"  
0 голосов
/ 05 июля 2018

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

unlist(strsplit(x, "(?<=\\d)\\s+(?=C)", perl=TRUE))

Выход:

[1] "C 10.1" "C 12.4" "C 12"   "C 45.5" "C 10" 

См. Онлайн-демонстрацию R и демонстрацию regex .

Регулярное выражение (?<=\\d)\\s+(?=C) соответствует 1 или нескольким пробельным символам (\\s+), которым непосредственно предшествует цифра ((?<=\\d)) и за которыми сразу следует C.

Если C может быть любой заглавной буквой ASCII, замените C на [A-Z].

...