在另一个字符串中查找字符串的一部

时间:2015-02-06 13:06:32

标签: regex r string

如何在另一个字符串中找到字符串的一部分。您可以在下面找到一些示例数据:

a <- c("23,45,24,67,91,10")
b <- c("as.01,as.23,as55,as69")

目标是在a中找到b的任何子字符串。因此,这应该返回TRUE,因为ab中存在23。我已经尝试了诸如

之类的功能
charmatch
grepl
match 

但所有这些似乎都不符合我的目的。任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:5)

输入a和b中可能存在错误:

a <- c("23","45","24","67","91","10")
b <- c("as.01","as.23","as55","as69")

> any(sapply(a, grepl, x=b))
[1] TRUE

或仅在您的输入中:

a <- c("23","45","24","67","91","10")
b <- c("as.01,as.23,as55,as69")

> any(sapply(a, grepl, x=b))
[1] TRUE

或者如果没有错误:

> any(sapply(strsplit(a,',')[[1]], grepl, x=b))
[1] TRUE

答案 1 :(得分:5)

您可以使用*apply来避免gsub循环并对其进行矢量化,以便将,替换为|并将其转换为有效的正则表达式。

grepl(gsub(",", "|", a, fixed = TRUE), b)
## [1] TRUE

这样,您也不需要使用any,因为即使您有多个匹配项,它也只会返回一个TRUE

a <- "23,45,55,67,91,10"
b <- "as.01,as.23,as55,as69"

grepl(gsub(",", "|", a, fixed = TRUE), b)
## [1] TRUE