目前,我正在使用下面的正則表達式從LDAP路徑中提取名稱,直到在路徑中使用了逗號爲止它才能正常工作。使用正則表達式從LDAP路徑中提取名稱
當前正則表達式:
CN=([^,]*).*
在這個例子中LDAP路徑下,我得到「德博拉\」,我想它返回「德博拉·詹姆斯」。我不理解正則表達式,並花了數小時試圖完成這項工作,任何人都可以幫我解決這個問題嗎?
CN =德博拉\,詹姆斯,OU =職員,DC =小樣,DC = COM
十分讚賞。 傑克
目前,我正在使用下面的正則表達式從LDAP路徑中提取名稱,直到在路徑中使用了逗號爲止它才能正常工作。使用正則表達式從LDAP路徑中提取名稱
當前正則表達式:
CN=([^,]*).*
在這個例子中LDAP路徑下,我得到「德博拉\」,我想它返回「德博拉·詹姆斯」。我不理解正則表達式,並花了數小時試圖完成這項工作,任何人都可以幫我解決這個問題嗎?
CN =德博拉\,詹姆斯,OU =職員,DC =小樣,DC = COM
十分讚賞。 傑克
如果你是在受控環境中可以控制CN將始終OU中找到,那麼你可以做這樣使用:
CN=(.*),OU=
如果你不能保證,那麼你可以使用此這是一個有點複雜,但如果任何其他屬性如下CN將工作或者CN是最後:
CN=(.*?)(?:,[A-Z]+=|$)
你應該使用LDAP API來解析名稱,而不是正則表達式。在Java JNDI中,這意味着從上下文獲取NameParser。
並非所有LDAP API都提供此功能。不幸的是,.NET的DirectoryServices API不支持(儘管它們有一個內部類,但它並未公開公開)。 OP沒有說他使用的是什麼技術。 –
我嘗試了列在這裏的其他答案,但他們仍然返回通用名稱以外的值。我不想要一個小組,所以這是我想出的。它將工作,如果在一個DN或OU內的CN。 (?我:(< = CN =?)
)*(= [A-ZA-Z] {0,2} =?|?$)
感謝您的,但這些都離我而去與 – JakeHolt
Deborah \,JamesStaff,DC = Comp,DC = com – JakeHolt
對不起,在我完成之前點擊了添加註釋,因爲您可以在上面看到它不起作用,也許我做錯了什麼。這對你有用嗎?謝謝 – JakeHolt