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

.NET正则GetGroupNames返回组数量超出预期问题咨询

正则表达式中未预期的组1是什么?

你的正则表达式^(?<GROUP_1>[1-4][0-9]|7[3-9]|8[0-9])(?<GROUP_2>(\\d{5}))$里,GROUP_2的定义嵌套了一层额外的括号:(?<GROUP_2>(\\d{5}))。这里的内层括号(\\d{5})是一个未命名捕获组,它会被自动分配数字编号1,这就是你看到的组1的来源。

各组对应关系说明:

  • 组0:默认的完整匹配结果,对应整个正则匹配的字符串1395614
  • 组1:内层未命名捕获组(\\d{5})捕获的内容,也就是95614
  • 组GROUP_1:第一个命名捕获组,捕获正则前半部分的13
  • 组GROUP_2:外层命名捕获组,它的匹配范围和内层未命名组完全重合,所以捕获内容也是95614

解决方法:

把GROUP_2定义里的多余括号去掉,修改后的正则如下:

string patternRegex="^(?<GROUP_1>[1-4][0-9]|7[3-9]|8[0-9])(?<GROUP_2>\\d{5})$"

这样就不会创建额外的未命名捕获组,GetGroupNames()返回的结果就会是["0", "GROUP_1", "GROUP_2"],符合你的预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 10:22:19