在PowerShell中使用RegEx来替换从字符串的开头到第一个逗号的所有内容,只需要我想要的内容

时间:2017-03-01 22:22:29

标签: regex powershell

我有这个字符串:

CN=Salaried_Emplyees,OU=Migration,OU=Groups

并且需要一个正则表达式来替换从字符串开头到第一个逗号的所有内容,无论我想要什么,即更改为:

CN=Anything,OU=Migration,OU=Groups

但是我尝试的每个正则表达式最终都匹配到最后一个逗号,而不是在第一个逗号后停止。

我尝试过的一个例子:

"CN=Salaried_Emplyees,OU=Migration,OU=Groups" -replace "^CN=.*,", "Anything"

结束为

AnythingOU=Groups

编辑:

我现在想通过不匹配CN =部分来进一步修改它,因此它只匹配:

Salaried_Emplyees,

CN=Salaried_Emplyees,

2 个答案:

答案 0 :(得分:2)

"CN=Anything,OU=Migration,OU=Groups" -replace '^(.*?),','YOURTEXT'

将所有内容替换为第一个逗号(包括它),基本上你需要使用*?来使正则表达式变得懒惰而不是贪婪

"CN=Anything,OU=Migration,OU=Groups" -replace '(CN=)(.*?),','$1YOURTEXT,'

答案 1 :(得分:0)

只是为了表现出不同的方式,

$string = "CN=Salaried_Emplyees,OU=Migration,OU=Groups"
$string
$Newstring = $string -replace "^[^,]+", "CN=Anything"
$Newstring
  • 开始时的^锚点
  • [^,]+是一个否定的字符类,匹配除逗号
  • 之外的所有内容
  • +表示至少有一个。

示例输出

> Q:\Test\2017-03\SO_42543257.ps1
CN=Salaried_Emplyees,OU=Migration,OU=Groups
CN=Anything,OU=Migration,OU=Groups