我有以下代码:
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
答案 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)