Java正则表达式抛出错误

Sex*_*ast 2 java regex perl

我试图从文本中捕获一定数量的块.假设文本是Kane高12345英尺.我想抓住12345.我想用这个:

import java.util.regex.Pattern; 
import java.util.regex.Matcher; 
String text = "Kane is 12345 feet high";
Pattern p = Pattern.compile("Kane is (\\d+) feet high");
Matcher m = p.matcher(text);
String s0 = m.group(0);
Run Code Online (Sandbox Code Playgroud)

但是我收到了一个Match not found错误.我在这做错了什么?我的意思是,在Perl中,这完美打印出来12345:

$foo = "Kane is 12345 feet high";
$foo =~ /Kane is (\d+) feet high/;
print $1;
Run Code Online (Sandbox Code Playgroud)

Mar*_*nik 8

只是实例化Matcher是不够的:你必须打电话m.matches(),标准做法是把它放在一个if:

if (m.matches()) s0 = m.group(1);
Run Code Online (Sandbox Code Playgroud)


Per*_*ror 6

你必须在调用Matcher.group()之前调用Matcher.find()

String text = "Kane is 12345 feet high";
Pattern p = Pattern.compile("Kane is (\\d+) feet high");
Matcher m = p.matcher(text);
if(m.find()){
String s0 = m.group(0);

}
Run Code Online (Sandbox Code Playgroud)

假设文本是Kane高12345英尺.我想拍摄12345

我认为,你的正则表达式应该如下所示,以便只捕获文本中的数字.

    Pattern p = Pattern.compile("\\d+");
Run Code Online (Sandbox Code Playgroud)