Специальные символы в функции в R - PullRequest
2 голосов
/ 30 июня 2019

Я собираюсь использовать «используемый» код в функции. Вот код

str_extract("temp", pattern = "(?:[^-]*\\-){1}([^\\-]*)$")))

Вот значение переменной "temp":

WV-Online-Reading-S1-COMBINED-ELA-3

Вот извлеченный вывод после запуска этой функции:

ELA-3

Может кто-нибудь объяснить мне, как работают эти специальные символы в "pattern = .."?

Используя ту же функцию, я хотел бы преобразовать это:

AIR-GEN-SUM-UD-ELA-NH-COMBINED-3-SEG1

к этому:

ELA-3

Хорошая ссылка на эти специальные символы также будет полезна.

Спасибо!

1 Ответ

3 голосов
/ 30 июня 2019

Чтобы найти правильное регулярное выражение, вам нужно знать, что именно вы систематически ищете в своих строках.Из вашего поста я предполагаю, что вы хотите извлечь строку 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")
...