首页 > 解决方案 > 如何 - 替换连续的特殊字符?

问题描述

尝试替换时在 PowerShell 中

"Columnname1||colunnname2||kjhsadjhj|kjsad" -replace "[||]", "','" 

上面的命令正在做

"列名1','','colunnname2','','kjhsadjhj','kjsad"

但我想替换下面的完全匹配

"列名1','colunnname2','kjhsadjhj|kjsad"

标签: powershell

解决方案


您的代码没有执行您想要的操作,因为您的搜索模式定义了一个字符类。即使您多次指定一个字符,正则表达式中的方括号也将精确匹配任何封闭字符的一次出现。[||]因此将完全匹配一个|字符。

由于您显然实际上并不想使用正则表达式匹配,因此我建议您通过该Replace()方法进行正常的字符串替换,而不是通过运算符进行正则表达式替换-replace

"Columnname1||colunnname2||kjhsadjhj|kjsad".Replace('||', "','")

如果您想坚持使用正则表达式替换,您必须指定两个文字|字符,或者通过转义它们,正如 PetSerAl 建议的那样

"Columnname1||colunnname2||kjhsadjhj|kjsad" -replace '\|\|', "','"

或者通过将它们中的每一个放在自己的字符类中

"Columnname1||colunnname2||kjhsadjhj|kjsad" -replace '[|][|]', "','"

推荐阅读