gpt4 book ai didi

regex - 在字符串中的任何位置以任何顺序匹配多个模式

转载 作者:行者123 更新时间:2023-12-04 19:40:37 24 4
gpt4 key购买 nike

使用 grep 在字符串中的任何位置以任何顺序匹配多个模式的最短方法是什么?最好在一条短线中使用基数 R。

下面是一个例子:

我想找到所有包含 的元素全部 这两个元素在我的 matches 中矢量,在 任何订单 , 在 任何地点 一起在 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

但是有没有更简洁的方法呢?在我的示例中,我有两个元素要匹配,但我的实际问题有几个。

最佳答案

避免 regex/paste 的选项将是

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可以用 intersect
Reduce(intersect, lapply(matches, grep, my_vector))

如果 matches中有很多元素, paste方法可能行不通...

关于regex - 在字符串中的任何位置以任何顺序匹配多个模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38342702/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com