我有这个字符串:
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,
答案 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