您好我正在尝试从字符串中提取英国邮政编码,即“该人的房子位于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"); }
答案 0 :(得分:1)
matches
方法与整个字符串匹配,您应该使用find
。并且不要在表达式中使用^
和$
。
SS9 8ID
也与正则表达式不匹配,因为ABD-HJLNP-UW-Z
不包含邮政编码中的字母I
。