Merge "Only match addresses without zip codes if at the end." into pi-dev

am: 2946fba398

Change-Id: Id429856912ed068d5656a4bed22a5ca88005e16f
This commit is contained in:
Torne (Richard Coles)
2018-04-09 06:12:27 -07:00
committed by android-build-merger

View File

@@ -429,20 +429,21 @@ class FindAddress {
// At this point we've matched a state; try to match a zip code after it.
Matcher zipMatcher = sWordRe.matcher(content);
if (zipMatcher.find(stateMatch.end())
&& isValidZipCode(zipMatcher.group(0), stateMatch)) {
return zipMatcher.end();
if (zipMatcher.find(stateMatch.end())) {
if (isValidZipCode(zipMatcher.group(0), stateMatch)) {
return zipMatcher.end();
}
} else {
// The content ends with a state but no zip
// code. This is a legal match according to the
// documentation. N.B. This is equivalent to the
// original c++ implementation, which only allowed
// the zip code to be optional at the end of the
// string, which presumably is a bug. We tried
// relaxing this to work in other places but it
// caused too many false positives.
nonZipMatch = stateMatch.end();
}
// The content ends with a state but no zip
// code. This is a legal match according to the
// documentation. N.B. This differs from the
// original c++ implementation, which only allowed
// the zip code to be optional at the end of the
// string, which presumably is a bug. Now we
// prefer to find a match with a zip code, but
// remember non-zip matches and return them if
// necessary.
nonZipMatch = stateMatch.end();
}
}
}