str_detect的帮助页面指出“等效于grepl(pattern,x)”,但是:
str_detect("ALL-", str_c("\\b", "ALL-", "\\b"))
[1] FALSE
而
grepl(str_c("\\b", "ALL-", "\\b"), "ALL-")
[1] TRUE
我想其中一个没有按预期工作?或者我错过了什么?
将参数perl = TRUE
添加到grepl()
时,它会得到相同的结果:
> grepl(str_c("\\b", "ALL-", "\\b"), "ALL-")
[1] TRUE
> grepl(str_c("\\b", "ALL-", "\\b"), "ALL-", perl = T)
[1] FALSE
这个论点意味着grepl()
将使用Perl Compatible Regex。
在?grep
有这个警告,这可能是相关的?
gsub和gregexpr的POSIX 1003.2模式在重复的字边界(例如,pattern =“\ b”)时无法正常工作。对于这样的匹配使用perl = TRUE(但是对于非ASCII输入可能无法正常工作,因为'word'的含义取决于系统)。