2017-02-21 11 views
-2

Я пытаюсь удалить все комментарии из JSON-файл с помощью регулярных выражений со следующей схемой:Заменить регулярное выражение в PowerShell скрипт не работает

$mytext="{/* anytext */ 'name':'myname'}" 
$mytext -replace /\/\*.+?\*\/|\/\/.*(?=[\n\r])/g,'' 

Выражение работает отлично в JavaScript, но не в PowerShell.

+1

Неправильный синтаксис, используйте '-replace«/ \ *. +? \ */| // .* (? = [\ n \ r]) ',' '' – wOxxOm

ответ

0
  1. Вы не котируется рисунка на
  2. PowerShell не завернуть модели с / и /g (глобальный флаг) не является необходимым, как -replace будет использовать его по умолчанию.

Я также добавил \s* для удаления ненужных пробелов после комментария

Try:

$mytext="{'foo'='bar' /* anytext */ 'name':'myname'} {'foo'='bar' /* anytext */ 'name':'myname'}" 
$mytext -replace '\/\*.+?\*\/\s*|\/\/.*(?=[\n\r])' 

Выход:

{'foo'='bar' 'name':'myname'} {'foo'='bar' 'name':'myname'} 
0
Thanks for quick answer guys. I have tried both the patterns and it works well, the only issue i am facing for some places it move the value text in next line which makes json invalid. 

"bootstrap": { 
     "base": "${app.dir}", 
     "manifest": "bootstrap.json", 
     "microloader": "b 
     ootstrap.js ",  " 
     css ": " 
     bootstrap.css "  },  " 
     output ": {   " 
     base ": " 
     $ { 
      workspace.build.dir 
     } 
It should be like 
"bootstrap": {`enter code here` 
     "base": "${app.dir}", 
     "manifest": "bootstrap.json", 
     "microloader": "bootstrap.js", 
     "css": "bootstrap.css" 
    }, 
/* *anytext */ 
"output": { 
     "base": "${workspace.build.dir}/${build.environment}/${app.name}" 
    },