我有一组文件,数千个文件。假设这些文件是这样的:
abc a
abc bnd nm
abc vcb
abc
abc something
nmn as
nmn af
nmn bvf
我需要把这些文件分组。我需要按部分名称匹配对这些文件进行分组。在这个例子中,我有两组。一个是组[abc]和组[nmn]。有什么建议吗?
编辑:原来有一个方法在String
,使这比regex更容易:String.startsWith(String prefix)
http://docs.oracle.com/javase/7/docs/api/java/lang/String.html startsWith(以)
Regex是有用的,但是对于这样的事情来说有点过头了。我很抱歉一开始想多了…
(旧答案如下)
听起来像是regex的工作!
http://docs.oracle.com/javase/7/docs/api/java/util/regex/package-summary.html String.matches()
也有帮助。
基本上,您需要创建与文件名的第一部分匹配的正则表达式,然后是其后的任何内容。在您的问题的示例中,示例正则表达式将是"abc"。" for abc______ "one_answers"nmn. 0 "。" for nmn_____。这些可能不是100%正确的语法,但这是一般的想法。链接中的规则(查看Pattern
类)将提供您所需要的几乎所有内容。
你要做的是创建两个新的Sets
,每个前缀一个。然后循环遍历原始集合,并根据正则表达式将文件名放入其中一个集合或另一个集合。
创建String
的哈希映射作为键和File
(如果您想要存储文件对象)或String
(如果文件名)的列表
并检查name是否以Anti
开头,将其放在组1中,并使用您喜欢的键从Philips
开始,在第二组中输入任意键