【问题标题】:Java - Using Regex to pull substrings out of dataset [duplicate]Java - 使用正则表达式从数据集中提取子字符串 [重复]
【发布时间】:2017-03-23 15:36:24
【问题描述】:

鉴于以下数据集,我正在尝试找到一种使用正则表达式提取城市名称的方法。

波士顿(马萨诸塞州)、纽约市(纽约州、康涅狄格州、新泽西州)

纽约市(纽约州、康涅狄格州、新泽西州)、费城(宾夕法尼亚州、新泽西州)

印第安纳波利斯(印第安纳州)、圣路易斯(密苏里州、伊利诺伊州)

圣。路易斯(密苏里州,伊利诺伊州),堪萨斯城(密苏里州,堪萨斯州)

我希望正则表达式的输出是:

波士顿,纽约市

纽约市,费城

印第安纳波利斯,圣。路易斯

圣。堪萨斯城圣路易斯

我尝试根据两个标准进行模式匹配:

(\\w+\\w(?=.())) | (\\w+\\W\\h\\w+(?=.()))

  1. 由来自[a-zA-Z]+ 的信件组成的城市,例如波士顿或费城
  2. 由句点/附加空格等附加字符组成的一个单词。

表达式准确匹配第一种情况。但是,对于第二种情况,它只匹配第一次出现的St. Louis

我还尝试了以下方法:

(\\w+ ?\\w(?=.())) | (\\w+\\h\\w+\\h\\w+(?=\\s.()))| (\\w+\\h\\w+(?=\\s.()))

  1. 第一个涵盖与上述相同的情况 - 由一个单词的城市组成。
  2. 第三个成功地涵盖了New York City 的情况,但是,就像第一个一样,未能识别出相同模式的情况。
  3. 与上一个模式中使用的大小写相同,匹配St. Louis 失败,而是匹配Kansas City

【问题讨论】:

  • 应该是NC,GA吗? (没有空格)
  • 在什么语言/环境下?
  • 请分享您的尝试。此外,最好知道您打算在哪种编程语言/工具中使用正则表达式。

标签: java regex regex-greedy


【解决方案1】:

这可以是 .Net 的用户

(((?<=\())\w{2})|(\w{2}(?=\)))|(\w{2}(?=,))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-29
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 2020-09-15
    相关资源
    最近更新 更多