2017-07-27 28 views
2

匹配的模式我有一个字符串在一个字符串

string str = "I am fine. How are you? You need exactly 4 pieces of sandwiches. Your ADAST Count is 5. Okay thank you "; 

我想要的是,获得ADAST计数值。对于上面的例子,它是5

这里的问题是,is之后的ADAST Count。它可以是is=。但是会有两个词ADAST Count

我已经试过是

var resultString = Regex.Match(str, @"ADAST\s+count\s+is\s+\d+", RegexOptions.IgnoreCase).Value; 
var number = Regex.Match(resultString, @"\d+").Value; 

我如何写一个将搜索is=的格局?

+1

试'[是| = ]'而不只是'is'。 –

回答

2

您可以使用

ADAST\s+count\s+(?:is|=)\s+(\d+) 

regex demo

注意(?:is|=)non-capturing group(即它是用来唯一一组交替不推,为进一步检索捕获栈这些子匹配)和|alternation operator

详细

  • ADAST - 一个字符串
  • \s+ - 1个或多个空格
  • count - 一个字符串
  • \s+ - 1个或多个空格
    • (?:is|=) - 要么is=
  • \s+ - 1以上空格
  • (\d+) - 第1组捕获一个或多个数字

C#:

var m = Regex.Match(s, @"ADAST\s+count\s+(?:is|=)\s+(\d+)", RegexOptions.IgnoreCase); 
if (m.Success) { 
    Console.Write(m.Groups[1].Value); 
} 
+1

谢谢!感谢解释:)。另一件事,'(\ d +)'中的“组1”是什么意思? –