我想看看,如果"001"
或 "100"
或 "000"
出现在 0
的 4 个字符的字符串中和 1
.例如,一个 4 个字符的字符串可能类似于 "1100"
或 "0010"
或 "1001"
或 "1111"
.如何使用单个命令匹配字符串中的多个字符串?
我知道 grep 可用于模式匹配,但使用 grep,我一次只能检查一个字符串。我想知道是否可以将多个字符串与其他命令或 grep 本身一起使用。
最佳答案
是的你可以。 |
在 grep
模式与 or
的含义相同.因此,您可以使用 "001|100|000"
来测试您的模式。作为你的模式。同时,grep
是矢量化的,因此所有这些都可以一步完成:
x <- c("1100", "0010", "1001", "1111")
pattern <- "001|100|000"
grep(pattern, x)
[1] 1 2 3
这将返回您的哪些向量包含匹配模式的索引(在本例中为前三个。)
有时,有一个逻辑向量会更方便,告诉您向量中的哪些元素是匹配的。那么你可以使用
grepl
:grepl(pattern, x)
[1] TRUE TRUE TRUE FALSE
见
?regex
有关 R 中正则表达式的帮助。编辑:
为了避免手动创建模式,我们可以使用
paste
:myValues <- c("001", "100", "000")
pattern <- paste(myValues, collapse = "|")
关于r - 匹配多个模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6947587/