你好,我正试图从一个字符串,即英国邮政编码提取。"这个人的房子在ss98id,我们会在晚上8点到那里",所以我可以提取"ss98id"位。我试过下面的代码,但它不工作的某种原因…有什么想法?
String pc1="^([A-PR-UWYZ](([0-9](([0-9]|[A-HJKSTUW])?)?)|([A-HK-Y][0-9]([0-9]|[ABEHMNPRVWXY])?)) [0-9][ABD-HJLNP-UW-Z]{2})|GIR 0AA$";
String test="the person's house is at SS9 8ID we'll be there at 8pm";
Pattern pattern = Pattern.compile(pc1);
Matcher matcher = pattern.matcher(test.toUpperCase());
if (matcher.matches()) {
//Log.d("pccode:::", matcher.group(1) );
Log.d("pccode:::", matcher.group());
} else { Log.d("NO","NO PCODE"); }
matches
方法匹配整个字符串,您应该使用find
代替。且表达式中不要使用^
和$
。
而且SS9 8ID
不匹配regexp,因为ABD-HJLNP-UW-Z
不包括邮政编码中的字母I
。