2017-08-10 180 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個字母