所以我有一个要序列化为GS1数据矩阵的字符串:
var code = (01)09501101020917(17)190508(10)ABCD1234(410)9501101020917
根据Guidelines,这是无效的,因为应用程序标识符(10)的长度是可变的,所以我需要在该节的末尾使用(ascii代码29)分隔符(所以类似这样的< br />
"(10)ABCD1234{(char) 29}"
因此,我将输入字符串分为几部分,一部分是应用程序标识符(AI),另一部分是数据。
我的正则表达式和获取AI的代码:
var identifierRegex = new Regex(@"\([0-9]{2,}\)", RegexOptions.ExplicitCapture);
var identifiers = identifierRegex.Split(code);
这几乎返回了正确的结果,identifiers
是一个string[]
,包含5个元素,第一个为空,其余为正确。
我的正则表达式和用于获取AI和数据的代码:
var dataRegex = new Regex(@"\([0-9]{2,}\)[0-9A-z]{0,}", RegexOptions.ExplicitCapture);
var aisAndData = dataRegex.Split(code);
这会返回完全错误的结果,aisAndData
是一个string[]
,其中有5个空元素
Here是regexstorm.net的链接,显示了第一个Regex的预期结果。 Here是regexstorm.net的链接,显示了第二个Regex的预期结果
我缺少什么/我的代码无法正常工作在哪里?