0

次の形式の文字列の引用符でカプセル化されたファイル名(または基本的には文字列、拡張子は必要ないため、スペースを含めることができます)があります。

attachment; filename="Some filename.ext"

Matcherしたがって、基本的に私のアプローチ(Java)は、と一緒に取ることでしたPattern

Matcher mat = Pattern.compile("attachment; filename=\"([\\w\\.]+)\"").matcher(filename);

しかし、myMatcher.find()戻りますFalse

正規表現はどこで間違っていますか?

4

1 に答える 1

5

\\wスペースと一致しません。.また、内側の文字クラスをエスケープする必要はありません (ただしエスケープしてもかまいません) 。スペースを許可するだけの場合は、文字クラスに追加します。

"attachment; filename=\"([\\w. ]+)\""

スペース、文字、数字、ピリオド、およびアンダースコアよりも多くの文字がある場合は、代わりに、次の引用符まですべてを取り込む否定文字クラスを使用することをお勧めします。

"attachment; filename=\"([^\"]+)\""
于 2012-12-02T12:59:54.227 に答える