我有两个产品名称列表。我的问题是“操作系统”与“系统”、“冷却系统”等匹配。但它只能与“Operating”、“OS”匹配。另一个例子是“Key Board”应该与“key”或“KB”匹配,而不是与“Mother Board”或只是“Board”匹配。
如何重视第一个词而不是第二个词?
我agrep()
在 R 中使用过。它也匹配“系统”和“冷却系统”作为第一个示例。如何避免这种匹配?
是否有任何功能/方法可以将“键盘”与“KB”和“操作系统”与“OS”匹配?
提前致谢。
我有两个产品名称列表。我的问题是“操作系统”与“系统”、“冷却系统”等匹配。但它只能与“Operating”、“OS”匹配。另一个例子是“Key Board”应该与“key”或“KB”匹配,而不是与“Mother Board”或只是“Board”匹配。
如何重视第一个词而不是第二个词?
我agrep()
在 R 中使用过。它也匹配“系统”和“冷却系统”作为第一个示例。如何避免这种匹配?
是否有任何功能/方法可以将“键盘”与“KB”和“操作系统”与“OS”匹配?
提前致谢。
我为此编写了一个函数,不是最优化的方法,但这将完成任务。输入是向量而不是列表,希望这会有所帮助
stringMatch<-function(search.string,inputstring,pattern=" "){
stringsplit<-unlist(str_split(search.string,pattern))
firstletter<-c()
for(i in seq(1,length(stringsplit))){firstletter<-paste(firstletter,
substring(stringsplit[i],1,1),sep="")}
search.string.l<-tolower(search.string)
firstletter.l<-tolower(firstletter)
matchstring<-grep(paste("\\b",search.string.l,"\\b","|","\\b",firstletter.l,"\\b"
,sep=""),tolower(inputstring))
return(matchstring)
}
test1<-c('hello p','helbbo','hello test','HP')
search.string<-'HP'
[1] 4