Android:提取英国邮政编码



你好,我正试图从一个字符串,即英国邮政编码提取。"这个人的房子在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

最新更新