首页 > 解决方案 > 你可以在字符串的同一部分有两个命名组吗?

问题描述

我在 .NET 中使用正则表达式命名组来查找扫描的条形码字符串的一部分。RegEx 可以添加到配置中,以便系统可以适应不同的条形码布局。

这很好用,但我有一种情况无法上班:

条形码示例:

17C002101/1803

正则表达式:

(?<LotNumber>.{9})(\/)(?<ExpDate>.{4})

这工作正常并提取:

批号:17C002101 有效期:1803

现在我还需要提取“TestCode”,这实际上是“LotNumber”匹配的一部分,在这种情况下最后四位数字是“2101”

有没有办法做到这一点,或者我需要创建多个正则表达式才能工作?

标签: .netregex

解决方案


如果您的第三组是另一个组的一部分并且没有发生重叠,您可以简单地嵌套这些组。

(?<LotNumber>.{5}(?<TestCode>.{4}))(\/)(?<ExpDate>.{4})

推荐阅读