Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式街道编号分隔符_C#_Regex_Street Address - Fatal编程技术网

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
这是我在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;
} 

我想你可以用这个
正则表达式是

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

[a-z]+
捕捉街道名称的最后一部分

 ?
注意
前面的空格?
表示1或0个空格

[0-9]+
1个或多个数字

 ?
另一个可选空间

\-?
可选破折号(-)


0到2个字母

是否总是在第二个空格之后?不,不总是,有些地址类似于“地址行25”@H35am如果下面的答案在所有情况下都有效,请接受。我的测试方法也有问题,你的答案对我帮助很大。
\-?
[a-z]{0,2}