如何交替使用向量列表(正则表达式)

How to use a list of vectors in alternation (regular expressions)

是否可以将字符串向量解析为正则表达式中的交替元素?例如:

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

所以如果我将 "Animals" 解析为正则表达式,它将导致:

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

它基本上应该像 rebus 包中的 or1() 一样工作。

您可以使用 paste0 生成正则表达式:

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

请注意,在 R 中,您需要使用双反斜杠 (\)。

我们可以使用sprintf

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