REGEX-从专有名称中提取OU

时间:2018-08-09 08:09:26

标签: regex windows powershell extract distinguishedname

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

2 个答案:

答案 0 :(得分:4)

您可以将所有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

答案 1 :(得分:0)

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

fadeOutUIImage = fadeOutUIGameobjectImage.GetComponent<Image>();

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