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?
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]
.
Save that as, say $string
.
Then do
$string -match 'spid="(\d+)"'
If there is a match, the value you want will be in $matches[1]
精彩评论