输入
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));
疑问:
如何在单场比赛中匹配两种情况?有可能吗?
或我模式的任何变化?
答案 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
。希望您根据自己的需要进行修改。