使用正则表达式从LDAP路径中提取名称

时间:2011-06-26 23:15:45

标签: regex ldap

目前我正在使用下面的正则表达式从LDAP路径中提取名称,它在路径中使用逗号之前一直正常工作。

当前正则表达式:

CN=([^,]*).*

在下面的示例LDAP路径中,我得到“Deborah”,我希望它返回“Deborah,James”。我不懂正则表达式,我花了好几个小时试图完成这项工作,任何人都可以帮我解决这个问题吗?

CN = Deborah \,James,OU = Staff,DC = Comp,DC = com

非常感谢。 杰克

3 个答案:

答案 0 :(得分:1)

如果您处于受控环境中并且可以控制OU始终可以找到CN,那么您可以使用此功能:

CN=(.*),OU=

如果你不能保证,那么你可以使用这个稍微复杂但是如果任何其他属性跟随CN或CN是最后一个属性的话:

CN=(.*?)(?:,[A-Z]+=|$)

答案 1 :(得分:0)

您应该使用LDAP API来解析名称,而不是正则表达式。在Java JNDI中,这意味着从Context中获取NameParser。

答案 2 :(得分:0)

我尝试了此处列出的其他答案,但他们仍然返回公共名称之外的值。我不想要一个小组,所以这就是我想出来的。如果CN在DN或OU中,它将起作用。

(I:?(小于= CN =))。?*(?=,[A-ZA-Z] {0,2} = | $)