我有一个类似于这个 9$1F 的字符串,需要检查它是否以数字开头,后跟“$”符号,并且应该以十六进制值结尾。
[0-9][\\$][0-9A-Fa-f]
我尝试过这样的事情,但失败了,谁能帮助我。
您可能正在使用.matches()
(这要求正则表达式匹配整个输入字符串),并且您的正则表达式仅匹配第一个十六进制数字。
尝试
[0-9][$][0-9A-Fa-f]+
代替[$]
,您也可以使用\\$
.
如果它必须绝对以数字开头,请尝试以下操作:
^\\d\\$[0-9A-Fa-f]+
如果您正在进行正则表达式匹配,您也可以使用它来拆分字符串。以下示例将数字和十六进制值转换为两个单独的整数。
final Pattern pattern = Pattern.compile("([0-9])\\$([0-9A-Fa-f]+)");
Matcher matcher = pattern.matcher("9$FF");
int digit = 0;
int hex = 0;
if (matcher.find()) {
digit = Integer.parseInt(matcher.group(1));
hex = Integer.parseInt(matcher.group(2), 16);
}
System.out.println(digit + " " + hex);
结果9 255
(9
和FF
)