android:解压uk邮政编码

时间:2011-12-11 16:19:35

标签: java regex string matching

您好我正在尝试从字符串中提取英国邮政编码,即“该人的房子位于SS9 8ID,我们将在晚上8点在那里”,因此我可以提取“SS9 8ID”位。我尝试过以下代码,但由于某种原因它没有工作......任何想法???

        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"); }

1 个答案:

答案 0 :(得分:1)

matches方法与整个字符串匹配,您应该使用find。并且不要在表达式中使用^$

SS9 8ID也与正则表达式不匹配,因为ABD-HJLNP-UW-Z不包含邮政编码中的字母I