regexpowershell

Extracting specific data from a string with regex and Powershell


I want to extract from this string

blocked-process-report process id="process435d948" taskpriority="0" logused="0" waitresource="RID: 7:1:1132932:0" waittime= "3962166" ownerId="4641198" transactionname="SELECT" lasttranstarted="2011-09-13T17:21:54.950" XDES="0x80c5f060" lockMode="S" schedulerid="4" kpid="18444" status="susp ended" spid="58" sbid="0" ecid="0"

The value that is in bold, but only the value or 58. And this value can be with different values, sometimes 80 or 1000, etc. but always > 50.

How can I do this using regex and posh?


Solution

  • The quick and dirty:

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

    where $string is your above mentioned string. This would match any string that has spid="somenumberhere", and make the number into a matched group, which you can extract using $matches[1].