【发布时间】:2019-07-13 17:07:12
【问题描述】:
假设我想匹配一个句子中的两个连续单词,但明确不匹配可能仍然包含这两个单词但不是一个接一个的其他句子。
mydata <- data.frame(text=c("I like pizza, and a read a novel.", "I like novels."))
所以,如果我这样做......
grepl("lik.*? novel.*?", mydata$text, perl=T, ignore.case=T)
...我得到“[1] TRUE TRUE”,而我需要的是“FALSE TRUE”,因为第一句中的“like”不是指“小说”。
现在,这可能是一个不好的例子,因为我可以简单地搜索“喜欢小说。*?”第一个单词没有通配符,但进一步假设我也需要对这两个单词中的第一个使用这个通配符。
与此相关:如何将句子中的单词与所述单词中间的通配符匹配?
例子:
mydata<-data.frame(text=c("xxx abc xxx", "xxx azc xxx", "xxx a bc xxx"))
我想匹配以“a”开头和以“c”结尾的单词,无论它们之间有什么,但条件是这必须是一个单词。目前,即使是第三行,我也得到“TRUE”,而我需要的是前两行的匹配,而不是第三行的匹配:
grepl("a.*?c", mydata$text, perl=T, ignore.case=T)
【问题讨论】: