java - 正则表达式解析街道名称

标签 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;
}

我做错了什么?

最佳答案

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

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

关于java - 正则表达式解析街道名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18033618/

相关文章:

regex - MATLAB 转义括号

regex - VSCode : TextMate Regex in User Settings

java - 无缘无故的负整数,cos,sin。

java - 将 System.out.println 或 stdout 数据捕获到 swing 备忘录(大数据)

java - 如何在 spring mvc rest Controller 中返回二进制数据而不是 base64 编码的 byte[]

java - UDP 服务器从客户端获取数据,即使服务器是最后启动的

java - 我应该为此动画使用 SwingWorker、线程或递归更新吗?

c# - 从 SQL 语句中提取更新列的正则表达式

正则表达式返回一组中的所有匹配项

java - 单词之间的正则表达式