我有一个字符串
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
或=
的模式?
答案 0 :(得分:2)
您可以使用
ADAST\s+count\s+(?:is|=)\s+(\d+)
请参阅regex demo
请注意,(?:is|=)
是non-capturing group(即,它仅用于对替换进行分组而不将这些子匹配推送到捕获堆栈以进一步检索)并且|
是{{3} }}
<强>详情:
ADAST
- 文字字符串\s+
- 一个或多个空格count
- 文字字符串\s+
- 一个或多个空格
(?:is|=)
- is
或=
\s+
- 一个或多个空格(\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);
}