如何在捕获的正则表达式组中不包含字符串的一部分

时间:2017-04-12 21:50:03

标签: regex regex-lookarounds regex-group

    String  "Ap: SV, Classe Store Stat: AC,"

我使用负面的外观,所以我可以在字符串Stat:

之后获取AC
(?!Stat:)(\s\D\D),

但是它会被捕获

  1. SV,
  2. AC,
  3. 我只想拍摄Just AC。我该怎么做呢。对于正则表达式,我相当新手。

    〜w ^

1 个答案:

答案 0 :(得分:1)

在.NET正则表达式中,您可以使用无限的lookbehind或捕获来获得所需内容:

var m = Regex.Match(s, @"\bStat:\s*(\D\D,)");
if (m.Success) 
{
    Console.WriteLine(m.Groups[1].Value);
}

请参阅this regex demo

要将值直接变为m.Value,可以像这样使用lookbehind:

var m = Regex.Match(s, @"(?<=\bStat:\s*)\D\D,");
if (m.Success) 
{
    Console.WriteLine(m.Value);
}

请参阅regex demo

一般来说,捕捉看起来更有效率和多样性。

注意:\b是一个字边界,如果您不想将Stats与整个字匹配,请将其删除。