正则表达式解析街道名称

时间:2013-08-03 14:01:43

标签: java regex

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

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

我做错了什么?

1 个答案:

答案 0 :(得分:4)

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

"^\\d*\\s*((?:\\w+\\s*)*)ST$"