此正则表达式代码(如下所示)可用于地址行。例如:111 N Main St
出现为MAIN
。基本上,它省略了dr
,ave
,lane
等以及N,S,N,E等数字之后的方向术语。
但是,如果地址行为110 Main Table
(不包含street
,st
,lane
,blvd
等关键字,则会显示该值为null。我希望结果为Main Table
。另一个示例是110 N Main Table
(同样,这不具有street
,st
,lane
,bldvd
等关键值。我需要它再次出现MAIN TABLE
(简而言之,摆脱方向性术语(N),因为没有像street
,st
,lane
这样的关键字, blvd
)取整件事(主表)
我想知道如何根据这些标准调整我的正则表达式
正则表达式代码:
(?<=\d\b)\s*(?:N|S|W|E|North|South|East|West|NE)\s(.?)\s(?=drive|dr|ave|avenue|lane|ln|loop|hwy|circle|cir|plaza|pl|terrace|blvd|boulevard|pkwy|drive|dr|way|road|court|Parkway|run|st|ct|terr|rd|street)?
答案 0 :(得分:0)
正则表达式只是图片的一部分。你最好的选择是抓住这样的部分:
^(\d+)(?: [NS]?[WE]?)?(\w+(?: \w+)) (\w+)$
注意:如果需要,可以省略锚点^
和$
。
然后,之后,你可以使用语言的字符串比较运算符:
$3 == "foo" || $3 == "bar" || ... // should look something like this in C-like languages
或者,或者,如果您的语言支持它:
$3 in ["foo", "bar", ...]
然后你可以返回$2
。将它们放在一起以获得JS示例:
s.replace(/^(\d+)(?: [NS]?[WE]?)?(\w+(?: \w+)) (\w+)$/, (match, $1, $2, $3) => $3 in ["foo", "bar", ...] ? $2 : null));
不幸的是,在没有列出所有可能性的情况下,没有任何方法可以做到这一点。