REGEX - 从专有名称中提取 OU
REGEX - Extract OU from Distinguished Name
我需要使用 REGEX 从我的专有名称中提取 "OU" 部分。
例如:
"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"
我需要
"OU=Coiffeur,OU=France"
"OU=Coiffeur,OU=France"
"OU=Coiffeur_Inter,OU=France"
我试试"CN=SZHARCOFF Michel (AB),OU=Coiffeur_Inter,OU=France,DC=Paris,DC=France" -match "^CN=[\w-()]*[\w]*"
但是没有成功
您可以将所有 OU=
+ 1 个或多个非逗号子字符串与 \bOU=[^,]+
正则表达式匹配,然后将它们与 ,
:
连接
$matches = [regex]::matches($s, '\bOU=[^,]+') | % { $_.value }
$res = $matches -join ','
第一个字符串的输出:
OU=Coiffeur,OU=France
图案详情
\b
- 只匹配 OU
整个词的词边界
OU=
- 文字子串
[^,]+
- 1 个或多个 (+
) 个字符,而不是逗号(因为 [^...]
是 negated character class)逗号。
参见regex demo。
此模式将支持包含逗号的 DistinguishedName 属性,并为匹配项提供命名组。我在 PowerShell 中使用它来解析 ADObject 的父 DN 等。
^(?:(?<cn>CN=(?<name>.*?)),)?(?<parent>(?:(?<path>(?:CN|OU).*?),)?(?<domain>(?:DC=.*)+))$
参见 Regexr 演示:https://regexr.com/5bt64
我需要使用 REGEX 从我的专有名称中提取 "OU" 部分。
例如:
"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"
我需要
"OU=Coiffeur,OU=France"
"OU=Coiffeur,OU=France"
"OU=Coiffeur_Inter,OU=France"
我试试"CN=SZHARCOFF Michel (AB),OU=Coiffeur_Inter,OU=France,DC=Paris,DC=France" -match "^CN=[\w-()]*[\w]*"
但是没有成功
您可以将所有 OU=
+ 1 个或多个非逗号子字符串与 \bOU=[^,]+
正则表达式匹配,然后将它们与 ,
:
$matches = [regex]::matches($s, '\bOU=[^,]+') | % { $_.value }
$res = $matches -join ','
第一个字符串的输出:
OU=Coiffeur,OU=France
图案详情
\b
- 只匹配OU
整个词的词边界OU=
- 文字子串[^,]+
- 1 个或多个 (+
) 个字符,而不是逗号(因为[^...]
是 negated character class)逗号。
参见regex demo。
此模式将支持包含逗号的 DistinguishedName 属性,并为匹配项提供命名组。我在 PowerShell 中使用它来解析 ADObject 的父 DN 等。
^(?:(?<cn>CN=(?<name>.*?)),)?(?<parent>(?:(?<path>(?:CN|OU).*?),)?(?<domain>(?:DC=.*)+))$
参见 Regexr 演示:https://regexr.com/5bt64