8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

PowerShell Regex:根据模式删除字符串的特定部分

AlexanderF 1月前

15 0

我想删除字符串中所有不需要的部分,只留下名字。我没有得到预期的结果。我得到的不是“Aryshenskyi, Mihail”,而是一个空字符串……

我想删除字符串中所有不需要的部分,只留下名字。我没有得到预期的结果。我得到的不是“Aryshenskyi, Mihail”,而是一个空字符串。我做错了什么?我该如何修改代码以实现所需的输出?

$text = "CN=Aryshenskyi\, Mihail,OU=Users,OU=SMZ,DC=smzmi,DC=local"
$regex = "(CN=).+?(\\), .+?(,OU=.+)"
$result = $text -replace $regex, ""
Write-Host $result
帖子版权声明 1、本帖标题:PowerShell Regex:根据模式删除字符串的特定部分
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由AlexanderF在本站《powershell》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 这些答案 中找到的正则表达式 with -replace 提取通用名称,然后可以对反斜杠应用另一个替换。有关正则表达式的详细信息,请参阅 https://regex101.com/r/Clg5xj/1

    $text = "CN=Aryshenskyi\, Mihail,OU=Users,OU=SMZ,DC=smzmi,DC=local"
    $text -replace '^CN=|(?<!\\),.+' -replace '\\'
    

    您可以调整当前拥有的正则表达式,使其在单个替换中起作用,但是这个正则表达式仅适用于通用名称中带有转义逗号的可分辨名称。对于容器中的用户(而不是 OU 中的用户),它也会失败。有关正则表达式的详细信息,请参阅 https://regex101.com/r/46Xa2V/1

    $text = "CN=Aryshenskyi\, Mihail,OU=Users,OU=SMZ,DC=smzmi,DC=local"
    $text -replace '^CN=(.+?)(?:\\)(, .+?),OU=.+', '$1$2'
    
  • 但为什么我的正则表达式不起作用?我检查了 regex101 网站,它确实捕获了 \'CN=\'; \'\\'; \',OU=Users,OU=SMZ,DC=smzmi,DC=local\'。为什么删除部分不起作用?

  • 您正在捕获 CN= 以及 OU= 之后的所有内容,包括将其包含在捕获组 1 和 2 中,而不是捕获您要提取的内容@user2978216。请查看与您正在做的事情接近的更新

返回
作者最近主题: