我正在使用正则表达式来检查文件名。现在,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向我显示此消息?问题是什么?对程序有影响吗?
-在方括号字符类([...])中是特殊的。它可以用来指定字符范围。
[a-z]
Run Code Online (Sandbox Code Playgroud)
但是,您指定的范围([\w-_])没有任何意义。您大概是想_从字面上进行匹配,可以通过转义来实现-。
[\w\-_.]
Run Code Online (Sandbox Code Playgroud)
将-放在字符类的开始或结尾也可以。
[\w_.-]
Run Code Online (Sandbox Code Playgroud)