正则表达式检查特殊字符“$”

时间:2013-03-06 12:01:22

标签: java regex

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

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

我尝试了类似的东西,但它失败了,任何人都可以帮助我。

3 个答案:

答案 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 2559FF

中的结果