C# 正则表达式使用C从字符串中提取值#

C# 正则表达式使用C从字符串中提取值#,c#,regex,C#,Regex,给定以下字符串: “[##-##]随机的东西,但与括号和数字的第一个图案不同” 如果###基本上是一个随机数字,那么可以使用什么正则表达式和编码方法来可靠地使用C提取第一个##和第二个## 解决方案:根据下面的答案(稍加修改): \[(\d{2})-(\d{2})\]关闭,使用\d+而不是\d{2}。他说随机数,而不是“正好2”…+表示“一个或多个”。另外,我认为-也需要转义。@Nevyn你至少可以让他搜索其含义并根据自己的需要“修正”:p这是我成为一个糟糕老师的原因。我很难只给出一个问题的部

给定以下字符串:

“[##-##]随机的东西,但与括号和数字的第一个图案不同”

如果###基本上是一个随机数字,那么可以使用什么正则表达式和编码方法来可靠地使用C提取第一个##和第二个##


解决方案:根据下面的答案(稍加修改):


\[(\d{2})-(\d{2})\]
关闭,使用
\d+
而不是
\d{2}
。他说随机数,而不是“正好2”…
+
表示“一个或多个”。另外,我认为
-
也需要转义。@Nevyn你至少可以让他搜索其含义并根据自己的需要“修正”:p这是我成为一个糟糕老师的原因。我很难只给出一个问题的部分答案,并告诉那个人去查一下……即使我自己也是这样做的。@lantram在编程界,你必须准确:)我相信这是正确的,只是索引关闭了。请参见上面的“编辑到我的原始邮件”。谢谢如果我没有弄错的话,
Groups[0]
会给你匹配的字符串,例如
[##-##]
索引
1
2
会给你捕获的数字。此外,您可能希望将正则表达式锚定在字符串的开头,这样会更有效,而且如果在字符串的其他地方有相同类型的字符串(您说不会),它也会起作用。
Match match = Regex.Match(str, @"\[(\d+)-(\d+)\]");
if (match.Success) {
    //match.Groups[0].Value is the first number
    //match.Groups[1].Value is the second number
}
Match match = Regex.Match(str, @"\[(\d+)-(\d+)\]");
if (match.Success) {
    //match.Groups[1].Value is the first number
}