在PowerShell中尝试替换时
"Columnname1||colunnname2||kjhsadjhj|kjsad" -replace "[||]", "','"
以上命令正在执行
"Columnname1','','colunnname2','','kjhsadjhj','kjsad"
但是我想替换如下的完全匹配项
"Columnname1','colunnname2','kjhsadjhj|kjsad"
答案 0 :(得分:3)
您的代码无法满足您的要求,因为您的搜索模式定义了character class。即使您多次指定一个字符,正则表达式中的方括号也将完全匹配任何一个包含的字符。 [||]
将因此匹配一个|
个字符。
由于您显然实际上实际上不想使用正则表达式匹配,因此建议您通过Replace()
方法进行普通字符串替换,而不是通过-replace
运算符进行正则表达式替换:< / p>
"Columnname1||colunnname2||kjhsadjhj|kjsad".Replace('||', "','")
如果您要坚持使用正则表达式替换,则必须指定两个文字|
字符,或者按照PetSerAl的建议通过转义字符来指定
"Columnname1||colunnname2||kjhsadjhj|kjsad" -replace '\|\|', "','"
或通过将它们每个都放在自己的角色类中
"Columnname1||colunnname2||kjhsadjhj|kjsad" -replace '[|][|]', "','"
答案 1 :(得分:1)
正则表达式模式[||]
表示“ {{1}中的1个或|
中的一个”
将其更改为|
以匹配两个连续的管道:
\|{2}
答案 2 :(得分:0)
以防万一您的最终结果应该是:
'Columnname1','colunnname2','kjhsadjhj|kjsad'
$string = '"Columnname1||colunnname2||kjhsadjhj|kjsad"'
$string
$String = $string -replace '^"|"$',"'" -replace '\|{2}',"','"
$string
示例输出:
"Columnname1||colunnname2||kjhsadjhj|kjsad"
'Columnname1','colunnname2','kjhsadjhj|kjsad'