3

我需要使用 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]*" 但没有成功

4

2 回答 2

4

您可以将所有OU=+ 1 或更多非逗号子字符串与\bOU=[^,]+正则表达式匹配,然后将它们加入,

$matches = [regex]::matches($s, '\bOU=[^,]+') | % { $_.value }
$res = $matches -join ','

第一个字符串的输出:

OU=Coiffeur,OU=France

图案细节

  • \b- 仅匹配OU整个单词的单词边界
  • OU= - 文字子串
  • [^,]+- 除逗号之外的1 个或多个 ( +) 字符(如否定字符类)。[^...]

请参阅正则表达式演示

于 2018-08-09T08:30:09.740 回答
1

此模式将支持包含逗号的 DistinguishedName 属性,并为匹配项提供命名组。我在 PowerShell 中使用它来解析 ADObject 的父 DN 等。

^(?:(?<cn>CN=(?<name>.*?)),)?(?<parent>(?:(?<path>(?:CN|OU).*?),)?(?<domain>(?:DC=.*)+))$

请参阅 Regexr 演示:https ://regexr.com/5bt64

于 2020-09-11T21:00:15.753 回答