Reputation: 103
I need to extract "OU" part from my Distinguished Name with REGEX.
For exemple :
"CN=DAVID Jean Louis (a),OU=Coiffeur,OU=France,DC=Paris,DC=France"
"CN=PROVOST Franck,OU=Coiffeur,OU=France,DC=Paris,DC=France"
"CN=SZHARCOFF Michel (AB),OU=Coiffeur_Inter,OU=France,DC=Paris,DC=France"
I need to have
"OU=Coiffeur,OU=France"
"OU=Coiffeur,OU=France"
"OU=Coiffeur_Inter,OU=France"
I try "CN=SZHARCOFF Michel (AB),OU=Coiffeur_Inter,OU=France,DC=Paris,DC=France" -match "^CN=[\w-()]*[\w]*"
But doesn't succeed
Upvotes: 3
Views: 5319
Reputation: 61
This pattern will support DistinguishedName properties containing commas, and provides named groups for matches. I use this in PowerShell to parse an ADObject's parent DN, etc.
^(?:(?<cn>CN=(?<name>.*?)),)?(?<parent>(?:(?<path>(?:CN|OU).*?),)?(?<domain>(?:DC=.*)+))$
See Regexr demo: https://regexr.com/5bt64
Upvotes: 1
Reputation: 627082
You may match all the OU=
+ 1 or more non-comma substrings with \bOU=[^,]+
regex and then join them with ,
:
$matches = [regex]::matches($s, '\bOU=[^,]+') | % { $_.value }
$res = $matches -join ','
Output for the first string:
OU=Coiffeur,OU=France
Pattern details
\b
- a word boundary to only match OU
as a whole wordOU=
- a literal substring[^,]+
- 1 or more (+
) characters other than (as [^...]
is a negated character class) a comma.See the regex demo.
Upvotes: 4