You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改SSIS脚本组件中的Regex以提取含斜杠的门牌号

SSIS脚本组件门牌号提取Regex适配修改

原正则的适配缺口

原有正则^[0-9]+([A-Za-z]\\b)?仅能匹配字符串开头的数字段、以及数字后紧跟的单个字母后缀,遇到带斜杠分隔的复合门牌号(如49b/15 Main street这类格式)时,会在字母后的斜杠位置中断匹配,无法完整提取斜杠后的数字段,导致提取结果不符合预期。

正则修改方案

替换原有正则表达式为:

string sPattern = "^[0-9]+[A-Za-z]?(?:/[0-9]+)*\\b";

正则规则逐段说明

  • ^ 强制从字符串起始位置开始匹配,避免误匹配街道文本中间的数字内容
  • [0-9]+ 匹配门牌号起始位置的连续数字核心段
  • [A-Za-z]? 可选匹配数字后紧跟的单字母后缀(如49b中的b)
  • (?:/[0-9]+)* 非捕获组规则,可重复匹配0次或多次斜杠+连续数字的结构,专门覆盖49b/15这类带斜杠分隔的复合门牌号场景,不会抓取街道名称中的无关斜杠内容
  • \\b 单词边界标记,确保匹配到第一个非门牌号字符(通常是空格)时即停止,不会把后续街道名称内容纳入提取结果

适配后完整可运行代码

public override void Input0_ProcessInputRow(Input0Buffer Row)
    {
        //匹配规则:开头数字 + 可选单字母后缀 + 0或多段“/数字”复合门牌结构,碰到单词边界停止
        string sPattern = "^[0-9]+[A-Za-z]?(?:/[0-9]+)*\\b";
        string sString = Row.ADDRESS ?? ""; //空值地址统一转空字符串处理

        Match match = Regex.Match(sString, sPattern, RegexOptions.IgnoreCase);
        if (match.Success)
            Row.CivicNumber = match.Groups[0].Value;
        else
            Row.CivicNumber = "";
    }
}

适配覆盖场景验证

  • 纯数字门牌:123 Oak Avenue 提取结果为123
  • 带字母后缀门牌:49b Main street 提取结果为49b
  • 带斜杠复合门牌:49b/15 Main street 提取结果为49b/15
  • 纯数字斜杠结构门牌:12/3 Elm Road 提取结果为12/3

内容的提问来源于stack exchange,提问作者Simon GIS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.28 13:15:09