REGEX - 从专有名称中提取OU

问题描述 投票:2回答:1

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

regex windows powershell extract distinguishedname
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.