Кажется, вы ищете регулярное выражение для захвата юнитов. Поскольку у вас есть вектор длины три, мы бы предпочли вернуть еще один вектор длины три. Из вашего примера (ENGLI SH ONE) не ясно, как вы получаете цель в 4 единицы. Хотя я чувствую, что вы имели в виду 5, а не 3.
, вот как вы можете решить. Обычно это может использоваться для любого языка:
Engli sh:
gsub("\\p{L}*+\\d+", "", dd, perl = TRUE)
[1] "hours,days" "hours,days" "days"
Китайский:
gsub("\\p{L}*+\\d+", "", dd, perl = TRUE)
[1] "小时,天" "月,天" "天"
regmatches(ddc,gregexpr("(?<=\\d)\\p{L}+",ddc,perl = TRUE))
[[1]]
[1] "小时" "天"
[[2]]
[1] "月" "天"
[[3]]
[1] "天"
или если вы хотите использовать другие пакеты:
с использованием str_extract_all
:
library(stringr)
str_extract_all(ddc,"(?<=\\d)\\p{L}+")