首页 > 解决方案 > 正则表达式中的 False [] 范围

问题描述

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

正则表达式中的 False [] 范围“\w-”;标记为<-- HERE in m/^deploy-file-\d+_[\w <-- HERE _.]+\d+.log$/ at ...

代码

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

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

我的模式也适用于https://regex101.com/r/Lj2r4r/2

标签: regexperl

解决方案


-在括号字符类( [...])中是特殊的。它可用于指定字符范围

[a-z]

但是,您指定的范围 ( [\w-_]) 没有任何意义。您大概是要按字面意思匹配_,这可以通过转义-.

[\w\-_.]

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

[\w_.-]

推荐阅读