首页 > 解决方案 > 替换powershell中的正则表达式值

问题描述

  1. 从下面一行: [1;32mget[0m /dir/dir/dir {} [oiid:197,uiid:7522] [32m200[0m (676ms)
  2. 将其转换为: get /dir/dir/dir {} [oiid:197,uiid:7522] 200 (676ms)
  3. 有关正则表达式的任何建议,请值200可以是任何数字,值get可以是任何 http 方法。
  4. 我努力了
            $_.replace("[[\d+m]","").replace('[[1;\d+m]',"").replace('[[\d+]m]',"")
         } | Set-Content $newfilepath```

标签: powershellpowershell-3.0

解决方案


您可以使用-replace运算符和正则表达式执行以下操作:

$string = '[1;32mget[0m /dir/dir/dir {} [oiid:197,uiid:7522] [32m200[0m (676ms)'
$string -replace '\[\d.*?m'

\[匹配[并注意它需要被转义以进行文字匹配,因为它对[正则表达式是特殊的。\d是一个数字。.*?匹配尽可能少的字符,直到m匹配为止。

String 类Replace()方法不支持正则表达式。所以你不能像\d里面一样使用正则表达式。


推荐阅读