我在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 =红外,DC =内部, DC = myCompany中
我需要它等于
L_WDJACK127_WDC_SSIS_USER_CH
有人可以修复我的正则表达式吗?
答案 0 :(得分:1)
基本贪婪/懒惰量词问题:
string pattern = @"CN\=(.+?)\,";
此资源应该有助于解释原因:http://www.regular-expressions.info/repeat.html
基本上,.+
尝试将与任何字符匹配,并且在点击最后逗号之前尽可能至少匹配其中一个字符。通过在其末尾添加?
(.+?
),您可以告诉正则表达式引擎在您点击<之前,尽可能多地匹配中的任意一个,并且至少有一个字符匹配< strong>第一个逗号。