我有一个变量$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 "= *"
什么都不返回。我做错了什么?
答案 0 :(得分:4)
这并不太令人惊讶。正则表达式中的*
表示“零或更多”,所以当然你会返回所有内容。
这些行总是在=
之后结束吗?如果是,请使用$
检查字符串的结尾:
$line -match '=\s*$'
我正在使用\s
来捕获任何类型的空格,*
可以捕获所有可能的空格(如果有的话)。
然后使用$
匹配字符串的结尾。