用Java解析文本文件

jyr*_*and 2 java regex string parsing

我有一个包含一行的文本文件.像这样的东西:A10102012MikeM.第一个字母可以是A或P,下面的数字对应于日期,下一个是姓名,然后是性别(M或F).将此信息解析为Map的最佳方法是什么?当然我可以采用每个元素的string.substring(x,y).但它似乎太难编码了.这可以用正则表达式以某种方式实现吗?

Ran*_*Rag 6

尝试这个正则表达式^(A|P)(\d+)(\w+?)(M|F)$.这将有效,但有些条件:

1)它不会检查日期有效性.

2)输出应完全按照您的描述输出,否则可能会失败.

String str = "A10102012MikeM";

String p = "^([A|P])(\\d+)(\\w+?)(M|F)$";
Pattern pattern = Pattern.compile(p);
Matcher matcher = pattern.matcher(str);
if (matcher.find()){
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
System.out.println(matcher.group(3));
System.out.println(matcher.group(4));
}
Run Code Online (Sandbox Code Playgroud)

输出=

A 10102012 Mike M