用正则表达式分割字符串会导致错误的输出

时间:2019-02-22 08:01:05

标签: c# regex

所以我有一个要序列化为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的预期结果

我缺少什么/我的代码无法正常工作在哪里?

0 个答案:

没有答案