首页 > 解决方案 > 如何使用正则表达式查找添加的门牌号码(在地址中)

问题描述

我需要在地址中添加门牌号码。你是怎样做的?

这是我的代码。

    string result = string.Empty;
    Regex rgx = new Regex(@"(?<houseNumber>[\d]+\-*[\d]+)(-*)(\s?)(?<addition>[0-9a-zA-Z]{1})");
    Match match = rgx.Match(fullHouseNumber);
    if (match.Success)
    {
        result = match.Groups["addition"].Value;
    }
    return result;

举例:

  1. 50 ABC结果必须是"ABC"。现在我只得到“A” <=>错误的答案!
  2. 50 A结果必须是"A"。现在我只得到“A” <=> OK
  3. 50 50结果必须是"50"。现在我得到“5” <=>错误
  4. 50结果必须是""。现在我只得到"" <=> OK
  5. 50-10结果必须是"10"。现在我只得到“0” <=>错误

标签: c#regex

解决方案


您只选择 1 个字符:

(?<houseNumber>[\d]+\-*[\d]+)(-*)(\s?)(?<addition>[0-9a-zA-Z]{1})
                                                              ^

将其更改为:

(?<houseNumber>[\d]+\-*[\d]+)(-*)(\s?)(?<addition>[0-9a-zA-Z]+)

更新

检查这个:

(?<houseNumber>[\d]+[\s\-](?<addition>[0-9a-zA-Z]+))

推荐阅读