我使用ColdFusion函数查询Active Directory数据库,返回用户的成员资格信息,然后使用REGEX函数搜索指定组的输出。我做了#34; |"分隔符。
无论如何,这里有一些示例输出:
CN=Group One,OU=Distribution Lists,DC=Domain,DC=org|CN=Group Two,OU=Distribution Lists,DC=Domain,DC=org|CN=Group Three,OU=Distribution Lists,DC=Domain,DC=org|CN=Group Four,OU=Distribution Lists,DC=Domain,DC=org|CN=Group Five,OU=Distribution Lists,DC=Domain,DC=org
我想要捕获的是:
CN =第三组,OU =分布列表,DC =域,DC =组织
以下是我迄今为止所尝试的内容:
^|CN=(.*Group? Three)
以下是该示例的链接:http://rubular.com/r/DIGZOPwTag
我的问题是什么?
嗯,这并没有那么好用......它向左走,但是走得太远了!如何在第一次出现 | CN = 时将其停在左边?
提前感谢您的时间。非常感谢。
更好的示例输出:
CN=Pay Band 50,OU=Distribution Lists,DC=Domain,DC=org|CN=Human Resources,OU=Distribution Lists,DC=Domain,DC=org|CN=SiteA Staff,OU=Distribution Lists,DC=Domain,DC=org|CN=SiteB Additional Staff,OU=Distribution Lists,DC=Domain,DC=org|CN=Executives,OU=Distribution Lists,DC=Domain,DC=org
所需匹配:
我正在寻找特定群体:
返回会很棒:" StieAlpha员工","网站测试版附加人员"。包含" CN ="也可以接受。前缀,因为我可以用它来稍后进行查询。
"的员工"和" 额外员工"将永远是我想要匹配的小组的一部分。
我再次尝试过
^|CN=[^|CN=]*? Staff|Additional? Staff
这个新例子不是很完美,因为它没有抓住所有的网站测试版#34; "网站测试版"例如,可以是任何建筑物的任何名称。
答案 0 :(得分:3)
如果只是“第三组”CN值或所有CN值,那么您想要提取的内容并不十分清楚。 您可以使用此正则表达式提取每个CN值:
CN=([^,]*)
这个正则表达式在每个“CN =”出现后开始提取并继续提取直到第一个逗号(,)。
答案 1 :(得分:0)
符合您要求的RegEx是
^.*?\|
。可视化: