C# 从特定文本格式中提取数字和文本

C# 从特定文本格式中提取数字和文本,c#,regex,C#,Regex,我有一个类似的文本: 你好@[123456:Foo] 如何获取“123456”和“Foo” 我的尝试: @\[([\d+]):([\s+])\] 你可以用 @\[(\d+):([^][]*)] 看。您需要的值在第1组和第2组中 详细信息 @\[-a@[子字符串 (\d+)-捕获组1:一个或多个数字 :-冒号 ([^][]*)-捕获组1:除]和[ ]-一个]字符 C#演示: 为什么要投反对票?很可能是因为你没有展示你在解决问题上的努力。你也没有提供一个应该和不应该匹配的示例列表,包括任何不

我有一个类似的文本:

你好@[123456:Foo]

如何获取“123456”和“Foo”

我的尝试:

@\[([\d+]):([\s+])\]
你可以用

@\[(\d+):([^][]*)]
看。您需要的值在第1组和第2组中

详细信息

  • @\[
    -a
    @[
    子字符串
  • (\d+)
    -捕获组1:一个或多个数字
  • -冒号
  • ([^][]*)
    -捕获组1:除
    ]
    [
  • ]
    -一个
    ]
    字符
C#演示:


为什么要投反对票?很可能是因为你没有展示你在解决问题上的努力。你也没有提供一个应该和不应该匹配的示例列表,包括任何不寻常的边缘情况。有许多表达式可以匹配特定情况下您需要的内容,但它们可能不够通用,无法应用于您的问题。这是一个非常糟糕的解决方案尝试,根本不匹配。我不擅长正则表达式,所以仍然缺少“自动接受来自Wiktor的正则表达式答案”功能
var m = Regex.Match(str, @"@\[(\d+):([^][]*)]");
if (m.Success) 
{
    Console.WriteLine(m.Groups[1].Value);
    Console.WriteLine(m.Groups[2].Value);
}