gr1fter Posted March 24, 2010 Share Posted March 24, 2010 hopefully this is an easy one: I have cn of CN=computername,OU=number,OU=name1,OU=name2...etc how do i display only the second OU=name1? as only name1 example in a messagebox will be fine. I can't figure this one Link to comment Share on other sites More sharing options...
PsaltyDS Posted March 24, 2010 Share Posted March 24, 2010 Obligatory geeky regexp solution: #include <Array.au3> $sDN = "CN=computername,OU=number,OU=name1,OU=name2,DC=Fabrikam,DC=COM" $aResult = StringRegExp($sDN, "(?U)(?:OU=)(.+)(?:,)", 3) _ArrayDisplay($aResult, "$aResult") Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law Link to comment Share on other sites More sharing options...
gr1fter Posted March 24, 2010 Author Share Posted March 24, 2010 wow that was fast. It does work in your example, but if i put it in a msgbox or a GUICtrlCreateEdit it is blank. here is what i put: #include <Array.au3> $sDN = "CN=computername,OU=number,OU=name1,OU=name2,DC=Fabrikam,DC=COM" $aResult = StringRegExp($sDN, "(?U)(?:OU=)(.+)(?:,)", 3) MsgBox (0,"",$aResult) Link to comment Share on other sites More sharing options...
PsaltyDS Posted March 24, 2010 Share Posted March 24, 2010 The $aResult is an array. AutoIt arrays are 0-based, so the second entry is $aResult[1]. Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law Link to comment Share on other sites More sharing options...
gr1fter Posted March 24, 2010 Author Share Posted March 24, 2010 The $aResult is an array. AutoIt arrays are 0-based, so the second entry is $aResult[1]. Thank you very much, i have it working now. As my title states, im still a newbie, but i'm getting there. If you don't mind can you explain what this part means (?U)(?:OU=)(.+)(?:,). Thanks again. Link to comment Share on other sites More sharing options...
PsaltyDS Posted March 25, 2010 Share Posted March 25, 2010 If you don't mind can you explain what this part means (?U)(?:OU=)(.+)(?:,).It's a "regular expression" pattern (see StringRegExp() in the help file): "(?U)" = "invert greediness", which means find the smallest possible match vice the largest."(?:OU=)" = "?:" means this part is non-capturing, or not to be included in the results, though it part of finding the results. You want stuff AFTER "OU=" without including the string "OU=" in the results."(.+)" = one or more of any characters"(?:,)" = another non-capturing group looking for a comma, but not including it in the result.So the pattern says to return all characters between "OU=" and ",". We invert greediness because by default it would return everything between the first "OU=" and the last ",". That would have made the result = "number,OU=name1,OU=name2,DC=Fabrikam" (largest possible match).Hope that helps. Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now