REGEX:选择左边的所有内容,直到第一个指定的分隔符

时间:2014-07-15 15:38:26

标签: regex coldfusion regex-lookarounds ldap-query

我使用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

所需匹配:

我正在寻找特定群体:

  1. 具有可能空格的网站名称 员工
  2. 具有可能空格的网站名称 其他员工
  3. 返回会很棒:" StieAlpha员工","网站测试版附加人员"。包含" CN ="也可以接受。前缀,因为我可以用它来稍后进行查询。

    "的员工"和" 额外员工"将永远是我想要匹配的小组的一部分。

    我再次尝试过

    ^|CN=[^|CN=]*? Staff|Additional? Staff
    

    这个新例子不是很完美,因为它没有抓住所有的网站测试版#34; "网站测试版"例如,可以是任何建筑物的任何名称。

    示例链接:http://rubular.com/r/vq5JcrvaBR

2 个答案:

答案 0 :(得分:3)

如果只是“第三组”CN值或所有CN值,那么您想要提取的内容并不十分清楚。 您可以使用此正则表达式提取每个CN值:

CN=([^,]*)

这个正则表达式在每个“CN =”出现后开始提取并继续提取直到第一个逗号(,)。

答案 1 :(得分:0)

符合您要求的RegEx是 ^.*?\|。可视化:

enter image description here