【问题标题】:regex street number separator正则表达式街道号码分隔符
【发布时间】:2017-08-10 11:43:47
【问题描述】:

我有一个地址字段,我想将街道名称和门牌号码后缀分开,地址的第一部分(街道名称)不是问题,但门牌号码后缀的第二部分有点棘手。
粗体部分是我要选择的部分:

  • 第一街25
  • 第一街25 a
  • 第一街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;
} 

【问题讨论】:

  • 它总是在第二个空格之后吗?
  • 并非总是如此,有些地址类似于“Address line line 25”
  • @H35am 如果以下答案适用于所有情况,请接受。

标签: c# regex street-address


【解决方案1】:

我认为你可以用这个demo 做到这一点
正则表达式是

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

【讨论】:

  • 我的测试方法也有问题,你的回答对我帮助很大。
【解决方案2】:
[a-z]+ ?([0-9]+ ?\-?[a-z]{0,2})

Explaination

[a-z]+

捕捉街道名称的最后一部分

 ?

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

[0-9]+

1 个或多个数字

 ?

另一个可选空格

\-?

可选的破折号 (-)

[a-z]{0,2}

0 到 2 个字母

【讨论】:

    猜你喜欢
    • 2011-06-28
    • 1970-01-01
    • 2021-12-31
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多