住所から6桁の郵便番号を取得する必要があります。
"51 Bras Basah Road#01-01 Manulife Center Singapore 189554"
郵便番号は常に6桁ですが、住所の最後にあるとは限りません。
上記の住所から郵便番号を取得するための適切な「java」正規表現を提供するのを手伝ってください。
Asmi
郵便番号が入力の6桁の数字だけであることが確実な場合は、次のことを回避できるはずです。
Pattern zipPattern = Pattern.compile("(\\d{6})");
Matcher zipMatcher = zipPattern.matcher("51 Bras Basah Road #01-01 Manulife Centre Singapore 189554");
if (zipMatcher.find()) {
String zip = zipMatcher.group(1);
}
java.util.regex.PatternのAPIドキュメントも参照してください。
最後の6桁の数字を見つける正規表現は次のとおりです。
((\d{6}.*)*\s)?(\d{6})([^\d].*)?$
もちろん、パターンをコンパイルするときは文字列をエスケープする必要があります。
Pattern postal_code_group3 = Pattern.compile("((\\d{6}.*)*\\s)?(\\d{6})([^\\d].*)?$");
一致するグループ3から郵便番号を取得できます。
文字列が郵便番号で始まらない限り、グループ2は郵便番号の前に空白を強制することに注意してください。
グループ4は、郵便番号の後のすべてを処理し、末尾の7桁以上の数字が郵便番号として一致するのを防ぎます。
これが単純な正規表現です
(。*)((\ d){6})$
最初のグループは「51BrasBasahRoad#01-01 Manulife Center Singapore」です。2番目のグループは郵便番号(6桁)です。