没有检测到两个字符之间的文字?

时间:2015-03-14 18:39:48

标签: c# .net regex

我需要识别标签[DN] 4 [-DN]之间的数字,所以我写了这个正则表达式:

Regex regexCount = new Regex(@"\[DN]([^)]*)\[-DN]");
Match matchCount = regexCount.Match("[DN]4[-DN]");

但是当我尝试将字符串匹配转换为Int32时,我收到此错误:

  

输入字符串的格式不正确。

这是我尝试转换的方式:

int count = Convert.ToInt32(matchCount.Value);

当我调试时,我看到匹配的值返回{[DN]2[-DN]}而不是 2 。然而,regex101测试使用相同的正则表达式给出了正确的结果:regex101

我做错了什么人?

1 个答案:

答案 0 :(得分:0)

您目前正在返回整场比赛。您需要从捕获组返回匹配的上下文。 Groups属性获取正则表达式中捕获的组。

int Count = Convert.ToInt32(matchCount.Groups[1].Value);

此外,否定的字符类似乎不正确,我会使用正则表达式标记\d

@"\[DN](\d+)\[-DN]"