Select-String Regex, чтобы найти строку между простыми кавычками - PullRequest
0 голосов
/ 18 января 2019

Я получаю следующие строки из invoke-webrequest:

numVersion = 'v1.1805.24',
    if(numVersion!="#@numVersion@#" && numVersion!="v1.1805.24") {

Из этого фрагмента мне нужно только сохранить номер numVersion между простыми кавычками ==> v1.1805.24.

Но в результате я получаю всю строку:

numVersion = 'v1.1805.24',
    if(numVersion!="#@numVersion@#" && numVersion!="v1.1805.24") {

Вот код:

$r = Invoke-WebRequest -Uri $url -Method Get
$split_string = $r.content -split "`n"
$raw_version = $split_string | select-string -Pattern 'numVersion' 
$raw_version -match '(.*?[^*])'

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Самое простое решение будет:

$r.content -match  "'([\S]+)'"

Значение с кавычками будет в $matches[0], а значение без кавычек будет в $matches[1].

0 голосов
/ 18 января 2019

Вы можете использовать

$r.content -match "(?<=numVersion\s*=\s*')v[0-9.]+"

См. Демоверсию regex .

Тогда нужное вам значение будет в $matches[0].Или вы можете также захватить нужный вам текст:

$r.content -match "numVersion\s*=\s*'(v[0-9.]+)"

Тогда значение будет в $matches[1].

Детали шаблона

  • (?<=numVersion\s*=\s*') - положительный вид сзади, который соответствует, но не потребляет numVersion и =, заключенный в 0+ пробелов, а затем ' char
  • v[0-9.]+ - v и затем 1 или более цифр или . символов.Вы можете заменить этот шаблон на [^']+ здесь, но он менее специфичен для текущей задачи.
...