如果街道名称以街道名称开头,正则表达式匹配街道类型

时间:2017-04-21 15:14:18

标签: regex

我遇到街道名称的问题,这些名称以星星,大道等词开头。因为它们在开头包含st和ave。我知道它与(?< = \ s)有关但是我似乎无法正确调整正则表达式来纠正这个问题。

Test Link

sg-

2 个答案:

答案 0 :(得分:0)

您需要在特殊字替换列表(首先剥离版本)之后添加\b(字边界):

...(?:court|ct|street|st|...|vw)\b...
                                ^^

整个正则表达式:

(\d+).*?((?:[a-z0-9].*(?:[a-z]|[^\S\r\n])+)).*?((?<=\s)(?:court|ct|street|st|drive|dr|lane|ln|rd|blvd|cir|trl|trai|crossing|xing|pl|place|ave|cv|cove|trce|trace|mnr|way|loop|bnd|bend|lndg|landing|path|pkwy|parkway|pass|rdg|ridge|vw)\b).*?((?:UNT|\#)[^\S\r\n]?\w|\w.*)?$|(\d+).*?((?:[a-z0-9](?:[a-z0-9]|[^\S\r\n])+))$

演示:https://regex101.com/r/h3LYzN/11

答案 1 :(得分:0)

好的,如果我理解您的需求,您需要验证街道地址,如果有效,则匹配建筑物#,街道名称,街道类型和可选单元#的组。要锁定街道类型,您可以使用边界条件'\ b'将其包围。

因此,这应该是您想要的更有效的查询版本(避免嵌套* in *)

^([0-9]+)\ (.*?)\ \b(court|ct|street|st|drive|dr|lane|ln|rd|blvd|cir|trl|trai|crossing|xing|pl|place|ave|cv|cove|trce|trace|mnr|way|loop|bnd|bend|lndg|landing|path|pkwy|parkway|pass|rdg|ridge|vw)\b.*?\b([0-9]+)?$