我在 Java 7 中使用这个 glob 只成功返回音频文件
*.{mp3,mp4,m4p,m4b,m4a,ogg,flac,wma}
但我还需要过滤掉任何以._ 开头的文件
似乎没有办法只排除模式,包括 glob 所以我然后切换到正则表达式但没有太多运气,这是我目前的(没有工作尝试)
[^\.].*\.{mp3,mp4,m4a,ogg,flac,wma}
请问我可以使用 glob 或正则表达式的解决方案吗
你可以试试这个: -
^(?!._).*[.](?:mp3|mp4|m4p|m4b|m4a|ogg|flac|wma)$
解释: -
^ // Beginning of the string
(?!._) // Negative look-ahead to confirm that there is no `._` at the starting.
.* // 0 or more any character
[.] // A dot (.)
(?:mp3|mp4|m4p|m4b|m4a|ogg|flac|wma) // Any one extension matched at the end.
$
请注意,您不需要dot (.)
在字符类中转义。
(?:...)
是非捕获组。