使用regex和Powershell从字符串中提取特定数据

时间:2011-09-13 22:06:06

标签: regex powershell

我想从这个字符串中提取

  

阻塞的进程报告 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。

我怎样才能使用正则表达式和豪华版?

2 个答案:

答案 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]