Java正则表达式解析出字符串的中间值

问题描述 投票:1回答:1

我有一些以字符串形式输入的数据,我需要提取或打印以下格式的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的长度。我的方法好吗?我在编译模式中缺少任何内容吗?

请让我知道!

java regex matcher
1个回答
0
投票

如果您看起来与正则表达式解决方案有所不同,那么以下内容可能会有所帮助:

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
© www.soinside.com 2019 - 2024. All rights reserved.