正则表达式中错误的[]范围

poi*_*isn 0 regex perl

我正在使用正则表达式来检查文件名。现在,Intellij的控制台向我显示此消息:

正则表达式中错误的[]范围“ \ w-”;在m / ^ deploy-file- \ d + _ [\ w <-HERE _。] + \ d + .log $ /中以<-HERE标记...

elsif ($filename =~ m/^deploy-file-\d+_[\w-_.]+\d+\.log$/) {
   print "$filename match with pattern\n";
}
Run Code Online (Sandbox Code Playgroud)

我想说的是,一切都正常,并且该模式到目前为止运行良好。我的问题是,为什么intellij向我显示此消息?问题是什么?对程序有影响吗?

我的模式也可以在https://regex101.com/r/Lj2r4r/2上使用

ike*_*ami 5

-方括号字符类[...])中是特殊的。它可以用来指定字符范围

[a-z]
Run Code Online (Sandbox Code Playgroud)

但是,您指定的范围([\w-_])没有任何意义。您大概是想_从字面上进行匹配,可以通过转义来实现-

[\w\-_.]
Run Code Online (Sandbox Code Playgroud)

-放在字符类的开始或结尾也可以。

[\w_.-]
Run Code Online (Sandbox Code Playgroud)