我想从这个字符串中提取
阻塞的进程报告 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 结束了“ spid =”58“ sbid =”0“ecid =”0“
以粗体显示的值,但只有值或58.此值可以是不同的值,有时为80或1000等,但始终> 50。
我怎样才能使用正则表达式和豪华版?
答案 0 :(得分:29)
快速而肮脏:
$found = $string -match '.*spid="(\d+)".*'
if ($found) {
$spid = $matches[1]
}
其中$string
是您上面提到的字符串。这将匹配任何具有spid =“somenumberhere”的字符串,并将该数字设置为匹配的组,您可以使用$matches[1]
提取该组。
答案 1 :(得分:0)
另存为,$string
。
然后做
$string -match 'spid="(\d+)"'
如果匹配,您想要的值将在$matches[1]