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
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.