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