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

正则表达式匹配失败:无法从公式字符串提取目标AB开头标识符

问题分析与解决方案

问题根源

  • 正则使用了^和$锚点,要求匹配整个字符串,但目标子串嵌套在IIF(...)内部,无法触发匹配。
  • [CC|DD|EE]+写法错误:方括号[]是字符集,会将|视为普通字符,且+允许重复匹配(如CCCC),但你需要的是CC/DD/EE三选一的固定前缀,应改用圆括号分组(CC|DD|EE)。
  • 同理,[F|G]错误,需改为(F|G),否则会匹配F、|、G中的任意单个字符。

修正后的正则与代码

调整后的正则表达式:

@"AB(CC|DD|EE)(F|G)\d{3}(HI|IC|HC)Z[A-Z0-9]{4}"

(\d等价于[0-9],写法更简洁)

完整代码示例:

var varFormula = "IIF(ABCCF012HIZ3000=0,0,ABCCF012HCZ3000/ABCCF012HIZ3000)";
MatchCollection matches = Regex.Matches(varFormula, @"AB(CC|DD|EE)(F|G)\d{3}(HI|IC|HC)Z[A-Z0-9]{4}", RegexOptions.IgnoreCase);

// 遍历输出所有匹配项
foreach (Match match in matches)
{
    Console.WriteLine(match.Value);
}

执行结果

ABCCF012HIZ3000
ABCCF012HCZ3000
ABCCF012HIZ3000

如果需要去重,可将结果存入HashSet<string>:

var uniqueMatches = new HashSet<string>();
foreach (Match match in matches)
{
    uniqueMatches.Add(match.Value);
}
foreach (var item in uniqueMatches)
{
    Console.WriteLine(item);
}

去重后输出:

ABCCF012HIZ3000
ABCCF012HCZ3000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 06:45:36