R 中的 grepl:尽管有字内破折号,但虚假匹配
grepl in R: spurious match despite intra-word dash
下面是一个最小的可重现示例:
v=c("\<skill-saw\>","\<saw blade\>")
text="xx placed his hand beneath skill-saw blade"
sapply(v,grepl,text)
最后一个命令 returns c(TRUE,TRUE) 我期待的是 c(TRUE,FALSE)。关于如何实现这一目标的任何想法?这个想法是,关键字 "skill-saw" 应该被检测为存在于文本中,而不是关键字 "saw blade"...
非常感谢您的帮助!
你可以试试regex
回头看
v <- c('(?<= )\bskill-saw\b', '(?<= )\bsaw blade\b')
unname(sapply(v, grepl, text, perl=TRUE))
#[1] TRUE FALSE
更新
基于新的"text",可能是
text1 <- "xx placed his hand beneath skill saw-blade"
v <- c('(?<= )\bskill-saw\b', '(?<= )\bsaw-?blade\b')
unname(sapply(v, grepl, text1, perl=TRUE))
#[1] FALSE TRUE
下面是一个最小的可重现示例:
v=c("\<skill-saw\>","\<saw blade\>")
text="xx placed his hand beneath skill-saw blade"
sapply(v,grepl,text)
最后一个命令 returns c(TRUE,TRUE) 我期待的是 c(TRUE,FALSE)。关于如何实现这一目标的任何想法?这个想法是,关键字 "skill-saw" 应该被检测为存在于文本中,而不是关键字 "saw blade"...
非常感谢您的帮助!
你可以试试regex
回头看
v <- c('(?<= )\bskill-saw\b', '(?<= )\bsaw blade\b')
unname(sapply(v, grepl, text, perl=TRUE))
#[1] TRUE FALSE
更新
基于新的"text",可能是
text1 <- "xx placed his hand beneath skill saw-blade"
v <- c('(?<= )\bskill-saw\b', '(?<= )\bsaw-?blade\b')
unname(sapply(v, grepl, text1, perl=TRUE))
#[1] FALSE TRUE