在字符串的任何位置使用grep以任何顺序匹配多个模式的最短方法是什么?优选在一条短线中使用碱R.
这是一个例子:
我想在my_vector的元素中找到包含所有这两个元素的所有元素,在任何顺序中,在任何位置,在元素中它们之间的任何字符.
matches <- c("fe","ve") # 1 2 3 4 5 6 7 8 9 my_vector <- c("fv","v","f","f_v_e","fe_ve","feve","vefe","fve","a") # want 5,6,7
我可以做这个:
grep(paste0("(?=.*",paste0(matches,sep = ""),")",collapse = ""),my_vector,perl = TRUE) [1] 5 6 7
解决方法
避免正则表达式/粘贴的选项是
which(grepl(matches[1],my_vector) & grepl(matches[2],my_vector)) #[1] 5 6 7
使它更有活力
which(Reduce(`&`,lapply(matches,grepl,my_vector))) #[1] 5 6 7
或者正如@Jota提到的grep可以用于交叉
Reduce(intersect,grep,my_vector))
如果匹配中有许多元素,则粘贴方法可能无效…
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。