Комментарий по моему отвечу на этот вопрос, который должен дать желаемый результат с использованием strsplit
не работает, хотя он, кажется, правильно соответствует первой и последней запятыми в символьном векторе. Это можно доказать, используя gregexpr
и regmatches
.
Итак, почему strsplit
разбивается на каждую запятую в этом примере, хотя regmatches
возвращает только два совпадения для одного и того же регулярного выражения?
# We would like to split on the first comma and
# the last comma (positions 4 and 13 in this string)
x <- "123,34,56,78,90"
# Splits on every comma. Must be wrong.
strsplit( x , '^\\w+\\K,|,(?=\\w+$)' , perl = TRUE )[[1]]
#[1] "123" "34" "56" "78" "90"
# Ok. Let check the positions of matches for this regex
m <- gregexpr( '^\\w+\\K,|,(?=\\w+$)' , x , perl = TRUE )
# Matching positions are at
unlist(m)
[1] 4 13
# And extracting them...
regmatches( x , m )
[[1]]
[1] "," ","
Да?! Что происходит?