Ruby - 使用Regex在字符串中查找城市名称

时间:2015-10-28 20:17:12

标签: ruby regex

我正在试图弄清楚如何使用正则表达式从字符串数组中提取城市名称。以下是字符串的格式:

City of Covina Police Department, Covina, CA 91728

现在我通过循环遍历每个字符串来拉动状态缩写,然后循环遍历US状态缩写的数组,以查看字符串是否包含其中一个,如下所示:

states = [my array of states]
string = the current string from the array
states.each do |state|
    if string.include?(state)
        counter[state] += 1
    end
end

根据字符串的格式,我如何使用Regex在每个字符串中查找城市?我在想,因为我已经找到了这个州,而且因为这个城市总是紧挨着这个州,所以我应该可以用它来找到它,但我不是那么精通正则表达式,所以我有麻烦的答案。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

如果:

  • 城市名称总是以逗号和
  • 括起来
  • 城市名称后面的逗号是该行
  • 中的最后一个逗号

然后你可以写:

str.split(',')[-2].strip

示例:

str = "City of Covina Police Department, Covina, CA 91728"
str.split(',')[-2].strip #=> "Covina" 

str = "City of Covina, Police Department, Covina, CA 91728"
str.split(',')[-2].strip #=> "Covina" 

答案 1 :(得分:0)

我不是来自美国所以我不知道状态代码总是格式XX和邮政编码总共5位数,但基于这个假设。这是

/\w+(?=, \w{2} \d{5}$)/
对于字符串

的结尾,

(?=...$)是正面的预测

\w{2}州代码

\d{5}邮政编码