我有一些以字符串形式输入的数据,我需要提取或打印以下格式的monthvalue(中间组):
[itemvalue] [monthvalue] [yearvalue]
规则是:
itemvalue =长度为1-3个字符(或数字)
monthvalue =是单个字母字符[a-z]
yearvalue =可以是1、2或4位数字,代表日历年份
一些示例输入:
Input1
AP18
Output1
P
Input2
QZAB19
Output2
B
Input3
ARM8
Output3
M
我正在尝试compile一个pattern,例如:
Pattern pattern = Pattern.compile("([a-zA-Z0-9]{1,3})([a-z])([0-9]{1,4})");
然后在输入上调用find()组的matcher,在这种情况下,monthvalue,应为matcher.group(2),例如:
Matcher m = pattern.matcher("OneOfTheExampleInputStringsFromAbove");
if (matcher.find()) {
System.out.println(matcher.group(2));
}
我以为我很亲密,但是一个问题是如何为yearvalue加上1、2和4的长度,但排除3的长度。我的方法好吗?我在编译模式中缺少任何内容吗?
请让我知道!
如果您看起来与正则表达式解决方案有所不同,那么以下内容可能会有所帮助:
String txt = "QZAB19";
String month = txt.replaceAll("[0-9]", ""); //replaces all integers
System.out.println(month.charAt(month.length()-1)); //get you the last character that is month
输出:
B