理解gre中的固定= T的grep

Gab*_*gro 7 r

我检查了不同的帖子,但仍然无法弄清楚为什么这不起作用:

c=c("HI","NO","YESS")
grep("YES",c,fixed=T)
[1] 3
Run Code Online (Sandbox Code Playgroud)

如果我正在使用fixed = T,为什么当"YES"没有完全匹配时,我仍然会得到结果.我只想要grep -w在bash中使用时完全匹配.

Phi*_*lip 5

这仅意味着您匹配的是字符串而不是正则表达式,但该字符串仍然可以是子字符串。如果您只想匹配确切的情况,怎么样

> x=c("HI","NO","YESS") #better not to name variables after common functions
> grep("^YES$",x,fixed=F) 
integer(0) 
Run Code Online (Sandbox Code Playgroud)

根据@nicola进行编辑^:这有效 b/c表示$字符串的开头和结尾,因此^xxxx$强制整个字符串匹配xxxx

  • 不需要基于“regex”的函数(如“grep”)。在这种情况下,最好使用简单的 `which(c=="YES")`。 (2认同)
  • 同意; 发布为答案。但OP正在使用`grep`,标题为“理解grep”的问题,并且可能想了解更多关于它是如何工作的以及如何针对更多情况修改它。 (2认同)