我有以下代码,我想用它来从地址字符串中捕获街道名称。
对于“77 ELM ST”的地址,下面的代码给出了“ELM”,这是正确的。
对于“115 GEORGE APPLETON FOX ST”的地址,代码为“APPLETON”。预期的结果应该是“GEORGE APPLETON FOX”
例如:
private static String ADDRESS_PATTERN = "^\\d*\\s*(\\w+\\s*)*ST$";
public String parseStreet(String address) {
Pattern addressPattern = Pattern.compile(ADDRESS_PATTERN);
Matcher matcher = addressPattern.matcher(address);
boolean found = matcher.find();
return found ? matcher.group(1).trim() : null;
}
我做错了什么?
答案 0 :(得分:4)
将捕获组放在要捕获的子匹配项周围。例如:
"^\\d*\\s*((?:\\w+\\s*)*)ST$"