Извлечение определенных данных из строки с помощью регулярных выражений и Powershell - PullRequest
11 голосов
/ 14 сентября 2011

Я хочу извлечь из этой строки

заблокирован-процесс-отчет процесса id = "process435d948" taskpriority = "0" logused = "0" waitresource = "RID: 7: 1: 1132932: 0 "waittime =" 3962166 "ownerId =" 4641198 "actionname = "SELECT" lasttranstarted = "2011-09-13T17: 21: 54.950" XDES = "0x80c5f060" lockMode = "S" schedulerid = "4" kpid = "18444"status =" susp закончилась " spid =" 58 " sbid =" 0 "ecid =" 0 "

Значение, выделенное жирным шрифтом, но только значение или 58И это значение может быть с разными значениями, иногда 80 или 1000 и т. Д., Но всегда> 50.

Как я могу сделать это, используя регулярные выражения и шикарные?

Ответы [ 2 ]

29 голосов
/ 14 сентября 2011

Быстро и грязно:

$found = $string -match '.*spid="(\d+)".*'
if ($found) {
    $spid = $matches[1]
}

где $string - ваша вышеупомянутая строка. Это будет соответствовать любой строке, которая имеет spid = "somenumberhere", и превратить число в соответствующую группу, которую вы можете извлечь, используя $matches[1].

0 голосов
/ 14 сентября 2011

Сохраните это как, скажем, $string.

Тогда сделай

$string -match 'spid="(\d+)"'

Если есть совпадение, то желаемое значение будет в $matches[1]

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