小编Fra*_*tar的帖子

Powershell - 正则表达式多重匹配

也许我的推理是错误的,但我不能让这个工作.

这是我的正则表达式: (Device\s#\d(\n.*)*?(?=\n\s*Device\s#|\Z))

试试看:http://regex101.com/r/jQ6uC8/6

$getdevice是输入字符串.我从命令行工具的Stream/Output中获取此字符串.

$dstate = $getdevice |
     select-string -pattern '(Device\s#\d(\n.*)*?(?=\n\s*SSD\s+|\Z))' -AllMatches |
     % { $_ -match '(Device\s#\d(\n.*)*?(?=\n\s*SSD\s+|\Z))' > $null; $matches[0] }
Write-Host $dstate
Run Code Online (Sandbox Code Playgroud)

输出:

设备#0设备#1设备#2设备#3设备#4

$ matches [1]的输出相同,$ matches [2]为空.

有没有办法可以获得所有比赛,比如regex101.com?我正在尝试将输出/字符串拆分为单独的变量(一个用于Device0,一个用于Device1,Device2,依此类推).

更新:这是命令行工具的输出:http://pastebin.com/BaywGtFE

regex powershell regex-group powershell-4.0

5
推荐指数
2
解决办法
3万
查看次数

标签 统计

powershell ×1

powershell-4.0 ×1

regex ×1

regex-group ×1