r - 匹配多个模式

标签 r regex

我想看看,如果"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/

相关文章:

python - 如何在 GridSearchCV 中正确选择最佳模型 - sklearn 和 caret 都做错了

r - 使用rep()将因子插入数据框的列中

r - 使用列表列规范化数据框

c++ - 尝试在 Linux 上使用 Clang++ 编译 c++11 正则表达式教程时出错

r - 带有子组的组的反向引用编号

Javascript 使用正则表达式替换空格和其他字符

regex - Oracle 在多行字符串中进行条件搜索

regex - Perl:匹配制表符分隔文件中的确切单词

r - 当我尝试将数据框与混合数据类型融合时,我得到了 NA。我怎样才能最好地解决这个问题?

regex - 在 R strsplit 中使用正则表达式