以逗号分隔的字符串获取第一个数字

时间:2016-09-14 09:27:25

标签: java regex string

我有以下代码:

Pattern.compile( "^\\d+").matcher("7861,1194,B545,B441,12").find()

它返回true,

Pattern.compile( "^\\d+").matcher("7861,1194,B545,B441,12").group(0) ,抛出

java.lang.IllegalStateException: No match found

我的正则表达式有什么问题?

P.S。已取消结果7861

3 个答案:

答案 0 :(得分:4)

您必须先使用matcher.find()才能使用.group(0)

Matcher matcher = Pattern.compile( "^\\d+").matcher("7861,1194,B545,B441,12");
matcher.find();
System.out.println(matcher.group(0));

答案 1 :(得分:2)

在使用find之前,您需要先在Matcher上调用group

Matcher matcher = Pattern.compile( "^\\d+").matcher("7861,1194,B545,B441,12");
matcher.find();
String num = matcher.group(); // equivalent to group(0)

答案 2 :(得分:-1)

如果您希望能够在匹配中找到一个组,则必须在正则表达式中定义()组。

"^(\\d+)"

此外,第一组是1而没有0.组0是整个表达式匹配;在你的情况下工作,因为整个表达是你想要的。 您必须在find()之前致电group(),但我认为您已按照find()的说法进行操作。

这应该有效:

Pattern.compile( "^(\\d+)").matcher("7861,1194,B545,B441,12").group(1)