Java android:提取英国邮政编码

Java android:提取英国邮政编码,java,regex,string,matching,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$"; Strin

您好,我正在尝试从字符串中提取英国邮政编码,即“此人的房子位于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"); }

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


而且
SS9 8ID
与regexp不匹配,因为
ABD-HJLNP-UW-Z
不包括邮政编码中的字母
I

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


而且
SS9 8ID
与regexp不匹配,因为
ABD-HJLNP-UW-Z
不包括邮政编码中的字母
I

SS9 8ID不是有效的英国邮政编码;我怀疑这是为了作为一个例子来弥补这个问题,但如果他用它作为一个例子来测试,那么这是一个糟糕的选择。他提供的正则表达式看起来像官方的正则表达式(不包括海外领土、军事和其他特殊代码),尽管我没有详细检查它。简而言之,如果他使用更好的测试代码,他会有更好的运气(我使用“TE57 1NG”作为一个测试代码,但使用真正有效的代码也是一个好主意。@user788971我给你的链接有很多解释,甚至有一个屏幕截图。SS9 8ID不是一个有效的英国邮政编码;我怀疑它是为了这个问题作为一个例子而编造的,但如果他用它作为一个例子来测试,那么它是一个糟糕的选择。他提供的正则表达式看起来是like是官方代码(减去海外领土、军事和其他特殊代码),尽管我没有详细检查。简言之,如果他使用更好的测试代码,他会有更好的运气(我使用“TE57 1NG”作为测试代码,但使用真正有效的代码也是一个好主意。@user788971我给你的链接有很多解释,甚至还有一个屏幕截图。