2017-08-10 125 views
2

我有一个地址字段,我想在街道名称和门牌号码后缀中分开,地址(街道名称)的第一部分不是问题,但是门牌号码后缀的第二部分是有点棘手。
在大胆的是,我要选择的部分:正则表达式街道分隔符

  • 街1号
  • 街1号
  • 街1号25B
  • 街1号25-AB

这是我在C#中使用只输出门牌号码后缀的正则表达式的代码,但至今没有运气选择了大胆部分:

{ 
    string sNum = AdField; 
    string sRep = @"\s(\d[^\s]*[ A-Z]\w*)?(\d\w\s)\s?(.+)"; 
    string output = Regex.Match(sNum, sRep).Value; 

    return output; 
} 
+0

是否总是第二空间后,来了吗? – TheChetan

+0

并非总是如此,有些地址类似于“地址线25” – H35am

+0

@ H35am如果以下答案适用于所有情况,请接受它。 –

回答

4

我觉得想你可以用这个demo
的做正则表达式是

\d+(\s|-)?\w*$ 
+0

我的测试方法也有问题,你的回答对我有很大的帮助。 – H35am

0
[a-z]+ ?([0-9]+ ?\-?[a-z]{0,2}) 

Explaination

[a-z]+ 

捕捉streetname

? 

的最后部分观看空间中的?指1或0位

[0-9]+ 

1或多个数字

? 

另一个前可选空间

\-? 

可选破折号( - )

[a-z]{0,2} 

0到2个字母