使用正则表达式进行LDAP搜索

时间:2011-06-09 13:06:02

标签: regex ldap

有没有办法可以使用字段的正则表达式在LDAP上搜索?我正在使用ldapsearch或“Sun Java System Directory Server控制中心”进行搜索。

3 个答案:

答案 0 :(得分:7)

答案是否定的,你不能。为什么?

因为LDAP标准将LDAP-SEARCH描述为具有4个参数的函数类型:

  1. 点头从哪里开始搜索,这是一个专有名称(DN)
  2. 您想要带回的属性
  3. 搜索的深度(基础,一级,子树)
  4. 过滤器。
  5. 您对过滤器感兴趣。

    MSDN Syntax Documentation

    LDAP Explorer Documentation

    超越语法

    您必须了解的是,属性和值以及通配符内部值之间的运算符与匹配规则交互,这些规则是您的目录的SCHEMA的一部分。在前Sun目录(现在是oracle)中,每个属性都可以使用三个匹配规则(相等,排序,子串)进行设置。

答案 1 :(得分:4)

LDAP支持'substring'搜索,这与通配符不完全相同。子字符串过滤器的示例包括'(uid=abc*)''(mail='john@*.com')'等等。

通常明智的做法是联系目录服务管理员,并询问您打算在过滤器中使用的任何属性,以便为子字符串搜索编制索引。专业LDAP服务器支持子字符串搜索,并且为了对搜索进行索引,可能需要指定最少数量的字符。例如,如果服务器是Sun Directory Server(Sun ONE,DSEE或SJS DS),则在索引生效之前,过滤器中的'*'字符前需要两个字符,如'(mail=ab*)'可能使用索引,而'(mail=a*)'可能不使用索引。

答案 2 :(得分:0)

LDAP协议以类似于SQL的方式支持基本通配符匹配,但不支持正则表达式。