正则表达式匹配器



我使用模式匹配将文件扩展名与我的表达式字符串匹配,其代码如下:-

public static enum FileExtensionPattern
{
    WORDDOC_PATTERN( "([^\s]+(\.(?i)(txt|docx|doc))$)" ), PDF_PATTERN(
        "([^\s]+(\.(?i)(pdf))$)" );
    private String pattern = null;
    FileExtensionPattern( String pattern )
    {
        this.pattern = pattern;
    }
    public String getPattern()
    {
        return pattern;
    }
}
pattern = Pattern.compile( FileExtensionPattern.WORDDOC_PATTERN.getPattern() );
        matcher = pattern.matcher( fileName );
        if ( matcher.matches() )
            icon = "blue-document-word.png";

当文件名为"Home&Artifact.docx"时,matcher.matches仍然返回false。它适用于扩展名为".doc"的文件名。

你能指出我做错了什么吗。

"Home&Artifact.docx"包含空格。由于允许除空白[^s]+之外的任何字符,因此该文件名不匹配。

试试这个:

(.+?(.(?i)(txt|docx|doc))$

这是因为文件名("Home & Artifact.docx")中有空格,但正则表达式的[^\s]+不允许有任何空格

将此正则表达式用于WORDDOC_PATTERN:

"(?i)^.+?\.(txt|docx|doc)$"

相关内容

  • 没有找到相关文章

最新更新