Java正则表达式 - 具有多个字符串说明的匹配器

时间:2016-08-30 13:05:42

标签: java regex

输入

45697B2

正则表达式:

static Pattern kindCodePattern = Pattern.compile("([a-zA-z])", Pattern.CASE_INSENSITIVE);

我做什么

从输入最后两个char并匹配单个char范围a-z,如果find删除最后两个char则分配一个空

kindCode = input.substring(Math.max(input.length() - 2, 0));
        matcher = kindCodePattern.matcher(kindCode);
        Boolean isAvailableKindCode = matcher.find();
        if (isAvailableKindCode) {
            input = input.substring(0, input.length() - 2);
        } else {
            kindCode = "";
        }

但是有些情况下我只想查看最后一个字符,比如输入是45697B然后

kindCode = input.substring(Math.max(input.length() - 1, 0));

疑问:

如何在单场比赛中匹配两种情况?有可能吗?

或我模式的任何变化?

1 个答案:

答案 0 :(得分:1)

我自己说,以下方法应该做你想要的:

private static final Pattern kindCodePattern = Pattern.compile("[A-Za-z].?$");

public static String findKindcode(String input) {
    Matcher matcher = kindCodePattern.matcher(input);
    boolean isAvailableKindCode = matcher.find();
    if (isAvailableKindCode) {
        return matcher.group();
    } else {
        return null;
    }
}

给定输入"45697B2",它返回"B2"。给定"45697B"它会产生"B"

45697BQ提供BQ(不只是Q),456972提供null。希望您根据自己的需要进行修改。