powershell - 如何 - 替换连续的特殊字符?
问题描述
尝试替换时在 PowerShell 中
"Columnname1||colunnname2||kjhsadjhj|kjsad" -replace "[||]", "','"
上面的命令正在做
"列名1','','colunnname2','','kjhsadjhj','kjsad"
但我想替换下面的完全匹配
"列名1','colunnname2','kjhsadjhj|kjsad"
解决方案
您的代码没有执行您想要的操作,因为您的搜索模式定义了一个字符类。即使您多次指定一个字符,正则表达式中的方括号也将精确匹配任何封闭字符的一次出现。[||]
因此将完全匹配一个|
字符。
由于您显然实际上并不想使用正则表达式匹配,因此我建议您通过该Replace()
方法进行正常的字符串替换,而不是通过运算符进行正则表达式替换-replace
:
"Columnname1||colunnname2||kjhsadjhj|kjsad".Replace('||', "','")
如果您想坚持使用正则表达式替换,您必须指定两个文字|
字符,或者通过转义它们,正如 PetSerAl 建议的那样
"Columnname1||colunnname2||kjhsadjhj|kjsad" -replace '\|\|', "','"
或者通过将它们中的每一个放在自己的字符类中
"Columnname1||colunnname2||kjhsadjhj|kjsad" -replace '[|][|]', "','"
推荐阅读
- react-native - 在 React Native 中的页面之间传递数据
- php - Laravel 不渲染 html
- ios - Xcode 9 的 iPhone 越狱问题
- python - 如何在新的 conda 环境中启动 spyder?
- gremlin - TinkerPop:按边缘计数过滤
- php - Magento 2 - setup:di:compile 上不存在类
- python - 循环绘制地图而不绘制先前的点
- angular - Angular 2 或 4 或 5 ng 样式,具有超过 2 个条件输出
- openshift - Openshift github状态结果
- ruby-on-rails - RAILS 5:Bundler 找不到 gem “actionpack” 的兼容版本: