首页 > 解决方案 > 如何使用powershell获取数组中的特定字符串?

问题描述

我有一个文本文件。文本文件包含这个

Name(0x0)/Class(0x17,0x0)/Format(0x0,0xFFFF,0x0)

我只想得到这个字符串Format(0x0,0xFFFF,0x0)

我尝试拆分它并获取数组编号。但问题是这种格式的文本文件有时会改变。这个字符串Format(0x0,0xFFFF,0x0)并不总是在最后一个数组中,有时数组的总数也不同。像这样。

Name(0x0)/Class(0x17,0x0)/Class2(0000,0000)/Format(0x0,0xFFFF,0x0)
or
Name(0x0)/Class(0x17,0x0)/Format(0x0,0xFFFF,0x0)/Class2(0000,0000)

Format(0x0,0xFFFF,0x0)我的期望是,无论它在哪里,我都能得到这个字符串。任何人都可以帮助我。非常感谢。

$File = Get-Content .\PC.txt
$split = $File -split "/"
$found= $split[2]
$found

标签: arrayspowershell

解决方案


正如iRon建议的那样,您可以使用Select-String则表达式,如下所示:

(Select-String 'Format\(.+?\)' .\PC.txt).Matches.Value

该部分通过输出的实例从 file 中的每个选定行中.Matches.Value提取正则表达式匹配的内容。Format\(.+?\).\PC.txt[Microsoft.PowerShell.Commands.MatchInfo]Select-Object

一旦实现了-OnlyMatching开关,一个更简单的解决方案将成为可能,它只直接输出所选行的匹配部分。

# Upcoming feature, not yet implemented as of PowerShell Core 7.0.0-preview.5
Select-String 'Format\(.+?\)' .\PC.txt -OnlyMatching

推荐阅读