寻找模糊匹配函数,R'中可能存在的错误;阿格雷普酒店

寻找模糊匹配函数,R'中可能存在的错误;阿格雷普酒店,r,regex,agrep,R,Regex,Agrep,我正在尝试构建一个函数,它使用R的agrepl进行近似匹配。 我使用的是一个regex模式,从我的角度来看,它不被视为regex 我通过在REPL中运行以下测试得出此结论: > patterns <- c("ha","^ha","ha$","^ha$","(^)ha","ha($)") > sapply(patterns,agrepl,x="ha",max.distance=0L,fixed=FALSE) ha ^ha ha$ ^ha$ (^)ha ha($)

我正在尝试构建一个函数,它使用R的
agrepl
进行近似匹配。 我使用的是一个regex模式,从我的角度来看,它不被视为regex

我通过在REPL中运行以下测试得出此结论:

> patterns <- c("ha","^ha","ha$","^ha$","(^)ha","ha($)")

> sapply(patterns,agrepl,x="ha",max.distance=0L,fixed=FALSE)
  ha   ^ha   ha$  ^ha$ (^)ha ha($) 
TRUE  TRUE  TRUE  TRUE FALSE FALSE 

> sapply(patterns,grepl,x="ha",fixed=FALSE)
  ha   ^ha   ha$  ^ha$ (^)ha ha($) 
TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
>图案清晰(图案,agrepl,x=“ha”,最大距离=0L,固定距离=FALSE)
哈哈哈$^哈哈哈(^)哈哈哈($)
真假
>sappy(patterns,grepl,x=“ha”,fixed=FALSE)
哈哈哈$^哈哈哈(^)哈哈哈($)
真的真的真的真的
我不太擅长使用正则表达式,但我很确定我所有的模式都应该匹配“ha”

假设我是对的,并且上述行为不应该发生,您是否能够提出另一个函数/解决方案来将我的模式与“ha”匹配

更具体地说,我需要一个模糊匹配器来帮助我在非结构化数据中查找关键字

更新 我应该指出,我使用正则表达式的唯一原因是因为我在寻找关键字(与它们周围的空格匹配)。
如果我能确保“haha”与“ha”不匹配,但“hafoo”与“ha”匹配,那么这个问题就不需要正则表达式。

您可以尝试
stru detect()
您可以使用
max.distance
参数解决您的问题的正则表达式通常是使用word
\b
oundaries(但它们也会在特殊字符之间匹配关键字,例如,
)或lookarounds。我不太确定你想用
(^)ha
ha($)做什么
因为捕获0长度的匹配似乎没有用,但我同意它应该有效。我没有R或agrep的经验,所以我希望我没有误解你的问题。是的,我确实认为(^)ha是无用的,但如果您查看上面的结果,它与^ha的结果不匹配,这对我来说很奇怪。同意,我熟悉的所有regex味道都会匹配,并且会毫无问题地返回一个空的捕获组以及完整的匹配。可能值得打开一个bug报告(如果可能;同样,不熟悉R)因为这很可能是一个不规则的用例,可能会发现一些实现弱点/问题。