Мы можем использовать regexpr/regmatches
в base R
. Он соответствует слову «CAT», за которым следует -
, если есть какие-либо ?
и одна или несколько цифр (\\d+
)
regmatches(x, regexpr("CAT-?\\d+", x))
#[1] "CAT01" "CAT013" "CAT0155" "CAT-01" "CAT-013" "CAT-0155"
data
x <- c('LOCAT01PE', 'WECAT013EJD', 'AFECAT0155DR',
'LO-CAT-01PE', 'WE-CAT-013-EJD', 'AFE-CAT-0155-DR')