我在powershell中返回了这样的数据:
1)Open;#1
2)Open;#1;#Close;#2;#pending;#6
3)Closed;#5
但我想要这样的输出:
1)1 Open
2)
1 Open
2 Close
6 pending
3)
5 Closed
代码:
$lookupitem = $lookupList.Items
$CMRSItems = $list.Items | where {$_['ID'] -le 5}
$CMRSItems | ForEach-Object {
$realval = $_['EventType']
Write-Host "RefNumber: " $_['RefID']
Write-Host $realval
}
任何帮助都会受到赞赏,因为我的PowerShell并不是那么好。
答案 0 :(得分:1)
如果没有正则表达式,您可以执行以下操作:
Ignore everything up to the first ')' character
Split the string on the ';' character
foreach pair of the split string
the state is the first part (ignore potentially leading '#')
the number is the second part (ignore leading '#')
或者你可以使用带有以下正则表达式的.NET System.Text.RegularExpressions.Regex
类来完成它:
(?:#?(?<state>[a-zA-Z]+);#(?<number>\d);?)
Captures
方法返回的MatchCollection
上的Matches
属性将是一个集合,其中每个项目将包含Group
集合中的两个实例;分别命名为state
和number
。