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



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

我已经尝试过^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'

一种选择是将开头的数字与可选空格和字符类匹配,该字符类将匹配&/-并捕获捕获组中的地址:

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

这将匹配

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

正则表达式演示

这应该可以完成工作: ds(D+)$

你可以在这里看到这个实际操作:https://rubular.com/r/tcbE7nhNkSQDyS

基本上,我们通过为我们要查找的字符串定义规则来选择我们想要的字符,即一个可能包含非数字字符 ( D+ 的字符串,当行结束时结束 ( $ (,并以一个数字开头,后跟一个空格 ( ds (。

最新更新