R:如何检查字符串中是否存在多个字符串?

时间:2016-01-31 17:53:24

标签: r

a <- "quick brown fox"
b <- "quick brown dog"

我想知道&#34;快速&#34;和&#34;狐狸&#34;字符串存在于a,b中。

即, 应用这个问题的答案,

a - 应该返回TRUE

b - 应该返回FALSE

1 个答案:

答案 0 :(得分:0)

我们可以使用双grepl &(更安全)

grepl('quick', a) & grepl('fox', a)
#[1] TRUE

grepl('quick', a) & grepl('fox', b)
#[1] FALSE

或者如果我们事先知道'狐狸'的位置,即它是否在quick之后(如示例中所示),那么我们可以使用正则表达式'快速',后跟0或更多字符后跟'狐狸'。我们也可以使用单词边界(\\b)进行侧翼以避免意外,即避免匹配quicknessfoxy等字词。

grepl('.*\\bquick\\b.*\\bfox\\b', a)
#[1] TRUE
grepl('.*\\bquick\\b.*\\bfox\\b', b)
#[1] FALSE

正如我之前提到的,这会为FALSE

提供foxy
grepl('.*\\bquick\\b.*\\bfox\\b', 'quick brown foxy')
#[1] FALSE

如果职位变化,

grepl('.*\\bquick\\b.*\\bfox\\b|.*\\bfox\\b.*\\bquick\\b', b)
#[1] FALSE

grepl('.*\\bquick\\b.*\\bfox\\b|.*\\bfox\\b.*\\bquick\\b', a)
#[1] TRUE