如果他们遵循您概述的规则,下面的正则表达式代码将与您的组匹配。正则表达式将在输入字符串中搜索所有 CN= 实例,然后是逗号之前的所有内容。
string groupString = "CN=Standards of Conduct,CN=Users,DC=rlhk,DC=local|CN=ManagementLevel-9,OU=Groups,OU=rem,DC=rlhk,DC=local";
foreach (Match match in Regex.Matches(groupString , @"CN=([^,]*)"))
{
Console.WriteLine(match.Groups[1].Value);
}
Console.ReadLine();
这是另一个版本(非控制台),它在 a 中捕获结果,List<string>
因此您可以对其进行迭代,或者检查其中是否包含特定值:
string groupString = "CN=Standards of Conduct,CN=Users,DC=rlhk,DC=local|CN=ManagementLevel-9,OU=Groups,OU=rem,DC=rlhk,DC=local";
List<string> matchedGroups = new List<string>();
foreach (Match match in Regex.Matches(groupString , @"CN=([^,]*)"))
{
matchedGroups.Add(match.Groups[1].Value);
}
//Use the matchedGroups collection here
要在 SSIS 包中使用它,您将添加一个脚本组件作为转换,然后在 Input Columns 选项卡上,选中与该字段对应的框,即 distinctname 并指示它是 ReadWrite。
foreach (Match match in Regex.Matches(Row.distinguishedname, @"CN=([^,]*)"))
{
Row.distinguishedname = (match.Groups[1].Value);
}
如果这是一个新列,那么您需要进入输入和输出选项卡,展开输出 0,选择输出列,单击添加列,然后为其提供新名称和数据类型(simplifiedName,DT_STR 3000 代码页 1252 )。然后我们将上面的行更改为
Row.simplifiedName = (match.Groups[1].Value);
不要忘记添加对正则表达式程序集的引用using System.Text.RegularExpressions;