使用 DirectoryServices.AccountManagement 我得到的用户DistinguishedName
看起来像这样:
CN=Adam West,OU=STORE,OU=COMPANY,DC=mycompany,DC=group,DC=eu
我需要从中获得第一个OU
价值。
我找到了类似的解决方案:C# Extracting a name from a string
并使用一些调整,我创建了这段代码:
string input = @"CN=Adam West,OU=STORE,OU=COMPANY,DC=mycompany,DC=group,DC=eu";
Match m = Regex.Match(input, @"OU=([a-zA-Z\\]+)\,.*$");
Console.WriteLine(m.Groups[1].Value);
此代码STORE
按预期返回,但如果我更改Groups[1]
为Groups[0]
我得到与输入字符串几乎相同的结果:
OU=STORE,OU=COMPANY,DC=mycompany,DC=group,DC=eu
如何更改此正则表达式,使其仅返回 的值OU
?所以在这个例子中我得到了 2 个匹配的数组。如果我的字符串中有更多的 OU,那么数组会更长。
编辑: 我已经将我的代码(使用@dasblinkenlight 建议)转换为函数:
private static List<string> GetOUs()
{
var input = @"CN=Adam West,OU=STORE,OU=COMPANY,DC=mycompany,DC=group,DC=eu";
var mm = Regex.Matches(input, @"OU=([a-zA-Z\\]+)");
return (from Match m in mm select m.Groups[1].Value).ToList();
}
那是对的吗?