等于后匹配空值

时间:2017-10-31 14:44:15

标签: powershell

我有一个变量$file,其中包含来自MSI安装程序的日志文件文本,示例行:

Property(S): PhysicalMemory = 4096
Property(S): DesktopFolder = C:\Users\Public\Desktop\
Property(S): SourceDir = C:\Scripts\

有些行在=之后没有值:

Property(S): Foo = 
Property(S): Bar = 

现在我试图只返回那些线,我试过了:

$file -match "=  *"
$file | Select-String -Pattern "=  *"

两者都返回具有匹配模式的所有行。和

$file | Select-String -SimpleMatch "=  *"

什么都不返回。我做错了什么?

1 个答案:

答案 0 :(得分:4)

这并不太令人惊讶。正则表达式中的*表示“零或更多”,所以当然你会返回所有内容。

这些行总是在之后结束吗?如果是,请使用$检查字符串的结尾:

$line -match '=\s*$'

我正在使用\s来捕获任何类型的空格,*可以捕获所有可能的空格(如果有的话)。

然后使用$匹配字符串的结尾。