Замена строки в PowerShell при совпадении с регулярным выражением - PullRequest
0 голосов
/ 10 марта 2020

Необходимо заменить строки после сопоставления с образцом. Использование powershell v4. Строка журнала -

"08:02:37.961" level="DEBUG" "Outbound message: [32056][Sent: HTTP]" threadId="40744"

Необходимо полностью удалить level и threadId. Ожидаемая строка -

"08:02:37.961" "Outbound message: [32056][Sent: HTTP]"

Уже пытались выполнить следующее, но не работали -

$line.Replace('level="\w+"','') 

AND

$line.Replace('threadId="\d+"','') 

Требуется помощь с правильной командой замены. Спасибо.

Ответы [ 2 ]

3 голосов
/ 10 марта 2020

Попробуйте это регулярное выражение:

$line = "08:02:37.961" level="DEBUG" "Outbound message: [32056][Sent: HTTP]" threadId="40744"
$line -replace '(\s*(level|threadId)="[^"]+")'

Результат:

"08:02:37.961" "Outbound message: [32056][Sent: HTTP]"

Детали регулярного выражения:

(                    # Match the regular expression below and capture its match into backreference number 1
   \s                # Match a single character that is a “whitespace character” (spaces, tabs, line breaks, etc.)
      *              # Between zero and unlimited times, as many times as possible, giving back as needed (greedy)
   (                 # Match the regular expression below and capture its match into backreference number 2
                     # Match either the regular expression below (attempting the next alternative only if this one fails)
         level       # Match the characters “level” literally
      |              # Or match regular expression number 2 below (the entire group fails if this one fails to match)
         threadId    # Match the characters “threadId” literally
   )
   ="                # Match the characters “="” literally
   [^"]              # Match any character that is NOT a “"”
      +              # Between one and unlimited times, as many times as possible, giving back as needed (greedy)
   "                 # Match the character “"” literally
)
0 голосов
/ 10 марта 2020

.replace () не использует регулярные выражения. https://docs.microsoft.com/en-us/dotnet/api/system.string.replace?view=netframework-4.8 -замена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...