部分字符串匹配 - R.

时间:2014-05-28 01:30:55

标签: regex r grep

我需要在R中编写一个查询来匹配列名中的部分字符串。我在SQL中寻找类似于LIKE运算符的东西。例如,如果我知道字符串的开头,中间或结尾部分,我会以格式编写查询:

LIKE 'beginning%middle%' 
在SQL中

它将返回匹配的字符串。在pmatchgrep,我似乎只能指定“开始”。 ,'结束'而不是订单。我正在寻找R中是否有类似的功能?

例如,假设我正在寻找向量:

y<- c("I am looking for a dog",
      "looking for a new dog", "a dog", "I am just looking")

假设我想编写一个选择"looking for a new dog"的查询,我知道字符串的开头是"looking",字符串的结尾是"dog"。如果我执行grep("dog",y),它将返回1,2,3。有没有办法在grep中指定开头和结尾?

2 个答案:

答案 0 :(得分:6)

grep函数支持正则表达式,使用正则表达式,几乎可以匹配任何内容

y<- c("I am looking for a dog", "looking for a new dog", "a dog", "I am just looking")
grep("looking.*dog",y, value=T)
# [1] "I am looking for a dog" "looking for a new dog" 

此处此模式会查找looking,然后查找“可能的内容”,然后dog。所以这应该做你想要的。

答案 1 :(得分:4)

在正则表达式中,^指定字符串的开头,$指定结尾,因此:

y<- c("I am looking for a dog", "looking for a new dog", "a dog", "I am just looking")
grep("^looking.*dog$", y)
[1] 2