2011-06-26 88 views
3

目前,我正在使用下面的正則表達式從LDAP路徑中提取名稱,直到在路徑中使用了逗號爲止它才能正常工作。使用正則表達式從LDAP路徑中提取名稱

當前正則表達式:

CN=([^,]*).* 

在這個例子中LDAP路徑下,我得到「德博拉\」,我想它返回「德博拉·詹姆斯」。我不理解正則表達式,並花了數小時試圖完成這項工作,任何人都可以幫我解決這個問題嗎?

CN =德博拉\,詹姆斯,OU =職員,DC =小樣,DC = COM

十分讚賞。 傑克

回答

1

如果你是在受控環境中可以控制CN將始終OU中找到,那麼你可以做這樣使用:

CN=(.*),OU= 

如果你不能保證,那麼你可以使用此這是一個有點複雜,但如果任何其他屬性如下CN將工作或者CN是最後:

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

感謝您的,但這些都離我而去與 – JakeHolt

+0

Deborah \,JamesStaff,DC = Comp,DC = com – JakeHolt

+0

對不起,在我完成之前點擊了添加註釋,因爲您可以在上面看到它不起作用,也許我做錯了什麼。這對你有用嗎?謝謝 – JakeHolt

0

你應該使用LDAP API來解析名稱,而不是正則表達式。在Java JNDI中,這意味着從上下文獲取NameParser。

+0

並非所有LDAP API都提供此功能。不幸的是,.NET的DirectoryServices API不支持(儘管它們有一個內部類,但它並未公開公開)。 OP沒有說他使用的是什麼技術。 –

0

我嘗試了列在這裏的其他答案,但他們仍然返回通用名稱以外的值。我不想要一個小組,所以這是我想出的。它將工作,如果在一個DN或OU內的CN。 (?我:(< = CN =?)

)*(= [A-ZA-Z] {0,2} =?|?$)

相關問題