我想在
上找到以下字符串1234 foo bar
123 foo bar dr
这是我的模式
(?!\d)(\w.*)(?=\s(court|ct|street|st|drive|dr|lane|ln|road|rd|blvd|cir|trl|trail|crossing|xing|pl|place|ave|cv|cove|trce|trace|mnr|way|loop|bnd|bend|lndg|landing|path|pkwy|parkway|pass|rdg|ridge|vw+))/i
当它没有匹配的结尾如“dr”时,我似乎无法弄清楚如何匹配“foo bar”。我试过在没有任何运气的情况下在多个位置实现$
答案 0 :(得分:1)
一种方法是使用可选的前瞻:
(?!\d)(\w.*)
(?=\s(court|ct|street|st|drive|dr|lane|ln|road|rd|blvd|cir|trl|trail|crossing|xing|pl|place|ave|cv|cove|trce|trace|mnr|way|loop|bnd|bend|lndg|landing|path|pkwy|parkway|pass|rdg|ridge|vw+)?)
在这里,您始终可以使用第一组,请参阅a demo on regex101(并注意不同的修饰符!)。
答案 1 :(得分:0)
对点上的街道类型使用负面预测:
(?<=\d )((?!\s(court|ct|street|st|drive|dr|<ETC>|vw)).)*
请参阅live demo。
整场比赛(第0组)是您的目标输入。