3

我有一个类似于这个 9$1F 的字符串,需要检查它是否以数字开头,后跟“$”符号,并且应该以十六进制值结尾。

[0-9][\\$][0-9A-Fa-f]

我尝试过这样的事情,但失败了,谁能帮助我。

4

3 回答 3

4

您可能正在使用.matches()(这要求正则表达式匹配整个输入字符串),并且您的正则表达式仅匹配第一个十六进制数字。

尝试

[0-9][$][0-9A-Fa-f]+

代替[$],您也可以使用\\$.

于 2013-03-06T12:05:14.600 回答
2

如果它必须绝对以数字开头,请尝试以下操作:

^\\d\\$[0-9A-Fa-f]+
于 2013-03-06T12:05:06.653 回答
0

如果您正在进行正则表达式匹配,您也可以使用它来拆分字符串。以下示例将数字和十六进制值转换为两个单独的整数。

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(9FF)

于 2013-03-06T12:51:25.217 回答