0

我有以下代码,我想用它来从地址字符串中捕获街道名称。

对于“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;
}

我究竟做错了什么?

4

1 回答 1

4

将捕获组放在要捕获的子匹配周围。例如:

"^\\d*\\s*((?:\\w+\\s*)*)ST$"
于 2013-08-03T14:04:03.767 回答