2013-03-06 103 views
3

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

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

我试过这样的东西,但它失败了,任何人都可以帮助我。

回答

2

如果必须绝对以数字开头,试试这个:

^\\d\\$[0-9A-Fa-f]+ 
+0

感谢您的答复。但是它给了我一个输入字符串“1 $ 04”的数字格式例外,是的,它应该以一个数字开头,后面跟着“$”,并且应该以十六进制结尾 – mee 2013-03-06 12:19:27

+0

你对比赛做了什么之后呢?显示堆栈跟踪你会得到什么? – 2013-03-06 12:21:46

+0

一旦匹配,我必须将字符串拆分为“$”。我不能粘贴堆栈跟踪,因为它表示一些缩进问题。一旦我完成了缩进,我将编辑我的帖子 – mee 2013-03-06 12:34:57

4

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

尝试

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

相反的[$],你也可以使用\\$

+0

感谢您的回复,但它给了我一个输入字符串“1 $ 04”的数字格式例外。 – mee 2013-03-06 12:12:27

0

如果你正在做一个正则表达式匹配,你也可以用它来分割字符串。以下示例将数字和十六进制值转换为两个单独的整数。在9 2559FF

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); 

结果

相关问题