我需要识别标签[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
我做错了什么人?
答案 0 :(得分:0)
您目前正在返回整场比赛。您需要从捕获组返回匹配的上下文。 Groups属性获取正则表达式中捕获的组。
int Count = Convert.ToInt32(matchCount.Groups[1].Value);
此外,否定的字符类似乎不正确,我会使用正则表达式标记\d
。
@"\[DN](\d+)\[-DN]"