>我正在尝试从包含数字和街道的多个示例中提取街道名称
我已经尝试过^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
(。