Regex str_detect(string=";,pattern=";^.*";)返回FALSE

Regex str_detect(string=";,pattern=";^.*";)返回FALSE,regex,r,stringr,Regex,R,Stringr,我希望str\u detect(v1.0.0)可以匹配任何模式^.*,因为*应该匹配0次或更多次。但是,str\u detect(string=“”,pattern=“^.*”)返回FALSE 为什么它不返回TRUE,是否有一种替代模式总是返回TRUE,而不管字符串是什么(但仍然使用str\u detect)?(作为一种不使注释部分混乱的回答。但是,我感觉我仍然遗漏了一些东西) 如果唯一的约束是返回值是逻辑值。你可以用 grepl(".*","") [1] TRUE 根据此搜索字符串“匹配0个

我希望
str\u detect
(v1.0.0)可以匹配任何模式
^.*
,因为
*
应该匹配0次或更多次。但是,
str\u detect(string=“”,pattern=“^.*”)
返回
FALSE

为什么它不返回
TRUE
,是否有一种替代模式总是返回
TRUE
,而不管字符串是什么(但仍然使用
str\u detect
)?

(作为一种不使注释部分混乱的回答。但是,我感觉我仍然遗漏了一些东西)

如果唯一的约束是返回值是逻辑值。你可以用

grepl(".*","")
[1] TRUE

根据此搜索字符串“匹配0个或更多字符”,因此它会抛出一个错误,因为可能存在无限多个匹配项(无论搜索空间如何)。我不知道同样的事情在R中是否正确,但这是我的猜测。我尝试了
str\u detect(string=“”,pattern=“^$”
,它也返回
FALSE
。我假设代码中有一个隐藏的早期输出。这使得无法使用空字符串。特别是,当
str_detect(string=“ab”,pattern=“a.*b”)
返回
TRUE
时,您不使用
grep(“.*”,”)
@wdkrnls这似乎是一个错误。关于github的报告,也许?@wdkrnls
grepl()
grep()
的版本,它返回一个逻辑结果。我真想知道为什么这会被否决。根据讨论,这对我来说似乎是一个合适的解决方案。如果您将代码更改为使用
grepl
,我将接受它。这样我就不必定义一个新函数(尽管我没有否决它)。尽管进行了讨论,最初的问题仍然说答案应该使用
str\u detect
。也许这就是反对票。