Обработка строк в Powershell

#string #powershell

#строка #powershell

Вопрос:

 "-Project:Abcdefg -Version: 1.2.3 -Channel: Some Random Text -Parametre: Some Random Text Again" 
  

Я хочу извлечь только "Version: 1.2.3" из приведенной выше строки.

Не могли бы вы, пожалуйста, предложить какой-нибудь простой метод для такого извлечения строки?

Комментарии:

1. [1] пожалуйста, добавьте маркеры форматирования вокруг ваших образцов данных, чтобы они были легко читаемы и были четко расположены. [2] что вы пробовали? что не сработало? [3] пожалуйста, совершите экскурсию по этому сайту, прежде чем ваш вопрос будет удален из-за несоблюдения правил.

Ответ №1:

В качестве альтернативы вы также могли бы использовать регулярное выражение -replace для этого, как в

 $str = "-Project:Abcdefg -Version: 145.126.110 -Channel: Some Random Text -Parametre: Some Random Text Again"
$str -replace '.*(Version:s*[d.] ).*', '$1'
  

Вывод:

 Version: 145.126.110
  

Комментарии:

1. Огромное тебе спасибо, Тео. Решение сработало идеально. Не могли бы вы, пожалуйста, предложить какие-нибудь бесплатные онлайн-источники для получения более подробных знаний о powershell или какие-нибудь книги, к которым можно обратиться для изучения Powershell?

2. @AkshayChouksey В Интернете можно найти множество бесплатных учебных материалов. Например, [1] Изучение PowerShell , [2] Начало работы с Microsoft PowerShell ,

3. @AkshayChouksey [3] Windows PowerShell Шаг за шагом , [4] Изучение PowerShell и многое другое .. и, конечно, этот сайт

Ответ №2:

Здесь просто предположение, потому что, как сказал Ли, этот вопрос сформулирован плохо, но я думаю, вы имеете в виду извлечь «Версию: 1.2.3» из полной строки.

Вы можете использовать Select-String .

 $str = "-Project:Abcdefg -Version: 1.2.3 -Channel: Some Random Text -Parametre: Some Random Text Again"
Select-String -InputObject $str -SimpleMatch "Version: 1.2.3"
  

Если это динамическое значение, вам понадобится регулярное выражение.

 $str = "-Project:Abcdefg -Version: 1.2.3 -Channel: Some Random Text -Parametre: Some Random Text Again"

([regex]::matches($str, "Version: d .d .d ", "IgnoreCase")).Value
  

Комментарии:

1. Спасибо Эндрю за предоставленное вами решение. Да, строка будет динамической, а также версия может содержать несколько цифр, например. 12.13.158 или 145.126.110 или 1.2.30. Я просто хочу избежать жестко закодированных решений.

2. Я обновил, чтобы соответствовать тому, что вам нужно. Символ d будет соответствовать любой цифре любое количество раз.

3. Спасибо Эндрю Дэвису. Решение, которое вы предоставили, сработало для меня.