如何将此glob转换为具有附加约束的正则表达式(使用Java 7)?

时间:2012-12-19 10:25:14

标签: java regex glob

我在Java 7中使用这个glob只能成功返回音频文件

*.{mp3,mp4,m4p,m4b,m4a,ogg,flac,wma}

但我还需要过滤掉以 ._

开头的所有文件文件

似乎没有办法只排除模式,包括globs所以我然后切换到正则表达式但没有太多运气,这是我当前的(没有工作尝试)

[^\.].*\.{mp3,mp4,m4a,ogg,flac,wma}

我可以使用glob或正则表达式获得解决方案吗

1 个答案:

答案 0 :(得分:1)

你可以尝试一下: -

^(?!._).*[.](?: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 (.)

(?:...)非捕获组。