正则表达式匹配器

时间:2013-12-05 10:59:24

标签: regex docx

我正在使用模式匹配来匹配文件扩展名和我的表达式String,其代码如下: -

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”扩展名的文件名,它可以正常工作。

请你指出我做错了什么。

2 个答案:

答案 0 :(得分:0)

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

使用此正则表达式代替WORDDOC_PATTERN

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

答案 1 :(得分:0)

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

请改为尝试:

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