C# 正则表达式街道编号分隔符
我有一个地址字段,我想在街道名称和门牌号后缀中分开,地址的第一部分(街道名称)不是问题,但门牌号后缀的第二部分有点棘手。C# 正则表达式街道编号分隔符,c#,regex,street-address,C#,Regex,Street Address,我有一个地址字段,我想在街道名称和门牌号后缀中分开,地址的第一部分(街道名称)不是问题,但门牌号后缀的第二部分有点棘手。 粗体是我要选择的部分: 第一街25 第一街25A 第一街25b 第一街25 ab 这是我在c#中使用的正则表达式代码,它只输出门牌号后缀,但到目前为止,没有运气选择粗体部分: { string sNum = AdField; string sRep = @"\s(\d[^\s]*[ A-Z]\w*)?(\d\w\s)\s?(.+)"; string outpu
粗体是我要选择的部分:
- 第一街25
- 第一街25A
- 第一街25b
- 第一街25 ab
{
string sNum = AdField;
string sRep = @"\s(\d[^\s]*[ A-Z]\w*)?(\d\w\s)\s?(.+)";
string output = Regex.Match(sNum, sRep).Value;
return output;
}
我想你可以用这个
正则表达式是
\d+(\s|-)?\w*$
[a-z]+
捕捉街道名称的最后一部分
?
注意前面的空格?
表示1或0个空格
[0-9]+
1个或多个数字
?
另一个可选空间
\-?
可选破折号(-)
0到2个字母是否总是在第二个空格之后?不,不总是,有些地址类似于“地址行25”@H35am如果下面的答案在所有情况下都有效,请接受。我的测试方法也有问题,你的答案对我帮助很大。
\-?
[a-z]{0,2}