【问题标题】:Regex for extracting city from comma separated address用于从逗号分隔地址中提取城市的正则表达式
【发布时间】:2019-08-21 03:32:06
【问题描述】:

我有这样的地址:

123 Main St, Los Angeles, CA, 90210

我只想捕捉城市:

Los Angeles

我一直在尝试这样的事情:

(?:[^,]+),\s([^,]+)

但我不明白如何只返回第二组。使用像 {2} 这样的标志似乎包括直到第二组,而不仅仅是第二组。

更新

我正在使用使用正则表达式模式的 Chrome 扩展程序,因此在这种情况下无法使用 Javascript 或其他语言。

【问题讨论】:

  • 您使用什么语言/工具?

标签: regex street-address


【解决方案1】:

您可以尝试的一般模式是:

^[^,]+,\s*([^,]+)

城市名称将在第一个(也是唯一一个)捕获组中可用。

Demo

【讨论】:

    【解决方案2】:

    我的猜测是,这个表达在这里可能很有趣,

    (?<=,\s)([A-Z].*?)(?=[,\s]*[A-Z]{2}[,\s]*\d{5}(?:-\d{4})?)
    

    如果您想探索/简化/修改表达式,它已经 在右上角的面板上进行了解释 regex101.com。如果你愿意,你 也可以在this link看,怎么搭配 针对一些样本输入。


    【讨论】:

    • 您的模式基于我提供的字符串工作,但我最终需要考虑完整的州名,所以我调整了您的模式并最终得到了这个: (?
    【解决方案3】:

    为什么你需要一个正则表达式?拆分应该就足够了。

    JS 中的示例:

    var str = "123 Main St, Los Angeles, CA, 90210";
    var res = str.split(", ");
    if(res.length>1)
    {
      console.log(res[1]);
    }

    Python 示例:

    s = "123 Main St, Los Angeles, CA, 90210";
    r = s.split(", ")
    if len(r) > 1:
      print(r[1])
    

    Java 中的示例:

    String s = "123 Main St, Los Angeles, CA, 90210";
    String[] parts = s.split(", ");
    if(parts.length > 1)
    {
      System.out.print(parts[1]);
    }
    

    【讨论】:

    • 用正则表达式解析csv确实有点尴尬
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多