Как использовать список векторов в чередовании (регулярные выражения) - PullRequest
2 голосов
/ 01 апреля 2020

Можно ли проанализировать вектор символьных строк в элементе чередования в регулярном выражении? Например:

pattern <- "^This\\s(*alternation element*)\\srocks\\."
Animals <- c("cow","dog","cat")

Так что, если бы я затем проанализировал «Животные» в регулярном выражении, это привело бы к:

pattern <- "^This\\s(*cow|dog|cat*)\\srocks\\."

В основном это должно работать как or1() из rebus пакет.

Ответы [ 2 ]

2 голосов
/ 01 апреля 2020

Вы можете использовать paste0 для генерации регулярного выражения:

paste0('^This\\s(', paste0(Animals, collapse = "|"), ')\\ssrocks\\.')
#[1] "^This\\s(cow|dog|cat)\\ssrocks\\."

Обратите внимание, что в R вам необходимо использовать двойную обратную косую черту sh (\\).

0 голосов
/ 01 апреля 2020

Мы можем использовать sprintf

sprintf("^Thi\\s(%s)\\ssrocks\\.", paste(Animals, collapse="|"))
#[1] "^Thi\\s(cow|dog|cat)\\ssrocks\\."
...