我有一个类似于这个9 $ 1F的字符串,需要检查它是否以数字后跟“$”符号开头,并且应该以十六进制值结束。
[0-9][\\$][0-9A-Fa-f]
我尝试了类似的东西,但它失败了,任何人都可以帮助我。
答案 0 :(得分:4)
您可能正在使用.matches()
(要求正则表达式匹配整个输入字符串),并且您的正则表达式只匹配第一个十六进制数字。
尝试
[0-9][$][0-9A-Fa-f]+
您可以使用[$]
。
\\$
答案 1 :(得分:2)
如果必须绝对以数字开头,请尝试:
^\\d\\$[0-9A-Fa-f]+
答案 2 :(得分: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
(9
和FF
)