在PowerShell中尝试替换时
"Columnname1||colunnname2||kjhsadjhj|kjsad" -replace "[||]", "','"
上面的命令正在进行
"Columnname1','','Lunname2','','kjhsadjhj','kjad">
但我想替换下面的完全匹配
"Columnname1','lunname2','kjhsadjhj|kjsad">
您的代码不能执行您想要的操作,因为您的搜索模式定义了一个字符类。即使多次指定一个字符,正则表达式中的方括号也会与任何一个包含的字符的一次匹配。因此CCD_ 1将精确地匹配一个CCD_ 2字符。
由于您实际上并不想使用正则表达式匹配,我建议您通过Replace()
方法进行普通字符串替换,而不是通过-replace
运算符进行正则表达式替换:
"Columnname1||colunnname2||kjhsadjhj|kjsad".Replace('||', "','")
如果你想坚持使用正则表达式替换,你必须指定两个文本|
字符,要么通过转义它们,就像PetSerAl建议的一样
"Columnname1||colunnname2||kjhsadjhj|kjsad" -replace '||', "','"
或者通过将它们中的每一个放在自己的字符类中
"Columnname1||colunnname2||kjhsadjhj|kjsad" -replace '[|][|]', "','"
正则表达式模式[||]
表示"|
中的1或|
中的一个">
将其更改为|{2}
以匹配两个连续管道:
"Columnname1||colunnname2||kjhsadjhj|kjsad" -replace "|{2}", "','"
以防万一,您的最终结果应该是:
'Columnname1','colunnname2','kjhsadjhj|kjsad'
$string = '"Columnname1||colunnname2||kjhsadjhj|kjsad"'
$string
$String = $string -replace '^"|"$',"'" -replace '|{2}',"','"
$string
样本输出:
"Columnname1||colunnname2||kjhsadjhj|kjsad"
'Columnname1','colunnname2','kjhsadjhj|kjsad'