Чтобы найти правильное регулярное выражение, вам нужно знать, что именно вы систематически ищете в своих строках.Из вашего поста я предполагаю, что вы хотите извлечь строку ELA_
и число в конце строк.Вы можете сделать это так:
strings <- c("WV-Online-Reading-S1-COMBINED-ELA-3", "AIR-GEN-SUM-UD-ELA-NH-COMBINED-3-SEG1")
gsub(".*(ELA\\-).*(\\d$)", "\\1\\2", strings)
[1] "ELA-3" "ELA-1"
Я кратко объясню компоненты шаблона:
.*
соответствует нулю или более произвольных символов ELA\\-
соответствует 'ELA -' \\d$
соответствует цифре в конце строки
Квадратные скобки образуют группу захвата, на которую можно "ссылаться" с помощью \\1
(первая группа захвата) и \\2
(вторая группа захвата).gsub()
берет все строки и заменяет их тем, что может совпадать в обеих обратных ссылках.Поскольку я не знаю точную систематизацию того, что вы ищете, шаблон, возможно, все еще нуждается в корректировке в соответствии с вашими потребностями.
Если вас интересует только первая цифра, вы можете получить ее с помощью
library(stringr)
strings %>% str_extract("\\d")