解析 Active Directory 字符串的正则表达式失败

Regex to parse Active Directory string fails

我在 C# 代码隐藏中有这个代码块:

string input = "CN=L_WDJACK127_WDC_SSIS_USER_CH,OU=ALOSup,OU=Infra,DC=internal, DC=mycompany,DC=com"
string pattern = @"CN\=(.+)\,";

MatchCollection matches = Regex.Matches(input, pattern);
foreach (Match match in matches)
{
    Console.WriteLine(match.Groups[1].Value);
}

当我运行这个的时候,match.Groups[1].Value等于

L_WDJACK127_WDC_SSIS_USER_CH,OU=ALOSup,OU=Infra,DC=internal, DC=mycompany

我需要它等于

L_WDJACK127_WDC_SSIS_USER_CH

有人可以修复我的正则表达式吗?

基本Greedy/Lazy量词问题:

string pattern = @"CN\=(.+?)\,";

此资源应该有助于解释原因:http://www.regular-expressions.info/repeat.html

基本上,.+ 会尝试匹配 尽可能多的任何字符,并且至少匹配其中一个字符,尽可能匹配 最后一个 逗号。通过在它的末尾添加一个 ? (.+?),你告诉正则表达式引擎在你点击之前尽可能多地匹配任何字符,至少匹配其中一个字符第一个逗号.