我有一个文件名(或基本上是一个字符串,因为它不需要有扩展名,但可以有空格),它由以下格式的字符串中的引号封装:
attachment; filename="Some filename.ext"
所以基本上我的方法(java)是用Matcher
来Pattern
:
Matcher mat = Pattern.compile("attachment; filename=\"([\\w\\.]+)\"").matcher(filename);
但myMatcher.find()
会返回False
RegEx哪里出错了?
答案 0 :(得分:5)
\\w
与空格不匹配。此外,您不需要(但可能)转义.
内部字符类。如果您只想允许空格,请将它们添加到角色类:
"attachment; filename=\"([\\w. ]+)\""
如果可能有多个字符而不是空格,字母,数字,句号和下划线,您可能需要使用负字符类,只需接收所有内容直到下一个引号:
"attachment; filename=\"([^\"]+)\""