заменить значение регулярного выражения в powershell

#powershell #powershell-3.0

#powershell #powershell-3.0

Вопрос:

  1. Из строки ниже: [1;32mget[0m / dir / dir /dir {} [oiid:197,uiid:7522] [32m200[0m (676 мс)
  2. преобразуйте его в: get /dir/dir/dir {} [oiid:197,uiid:7522] 200 (676 мс)
  3. любые предложения по регулярному выражению, пожалуйста, значение 200 может быть любым числом, а значение get может быть любым http-методом.
  4. Я пробовал
             $_.replace("[[d m]","").replace('[[1;d m]',"").replace('[[d ]m]',"")
         } | Set-Content $newfilepath```
 

Ответ №1:

Вы можете сделать следующее, используя -replace оператор и регулярное выражение:

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

[ совпадает [ и обратите внимание, что его необходимо экранировать для буквального совпадения, поскольку [ оно является специальным для регулярных выражений. d является цифрой. .*? сопоставляет как можно меньше символов, пока m не будет найдено совпадение.

Метод класса String Replace() не поддерживает регулярные выражения. Таким образом, вы не можете использовать выражения регулярных выражений, такие как d inside.