从部分地址获取街道名称的最佳正则表达式

时间:2019-04-15 17:17:20

标签: regex ruby

我正在尝试从包含数字和街道的多个示例中提取街道名称

我已经尝试过^\d+(-\d+|\w)? ([EWNS] )?,但这没有通过第二个测试用例。

我需要这些测试用例通过

2 Main Street -> 'Main Street'

5 & 6 Shore Lane -> 'Shore Lane'

7/8 Bay Way -> 'Bay Way'

73-97 Park Dr E -> 'Park Dr E'

2781 Boyle Street -> 'Boyle Street'

267 1/2 Brad St -> 'Brad St'

433 W. 49th St. -> 'W 49th St'

2 个答案:

答案 0 :(得分:0)

一个选项可能是将开头的数字与可选空格和一个字符类匹配,这些字符类将匹配&/-并在捕获组中捕获地址:

\A\d+(?: ?[&\/-] ?\d+)? (\w+(?: \w+)*)

这将匹配

  • \A字符串的开头
  • \d+匹配1个以上的数字
  • (?:
    • ?[&\/-] ?\d+匹配&/-的可选空格,可选空格和1个以上的数字
  • )?关闭组并将其设置为可选
  • (匹配空间并开始捕获组
    • \w+(?: \w+)*匹配1+个单词字符,并重复0+次空格和1+个单词字符
  • )关闭捕获组

Regex demo

答案 1 :(得分:0)

这应该可以完成:\d\s(\D+)$

您可以在此处看到此操作:https://rubular.com/r/tcbE7nhNkSQDyS

基本上,我们通过定义要查找的字符串的规则来仅选择所需的字符。即,可能包含非数字字符(\D+)的字符串,该字符串在行结束时($)结束,并以数字开头,后跟空格(\d\s)。