1

我将其存储在如下所示的文本文件中:

Java 8 更新 111
Java 8 更新 111(64 位)
Java 8 更新 131
Java 8 更新 151
Java 8 更新 152

我正在使用 PowerShell 来处理这些信息,但在第一个障碍中挣扎。我正在使用Select-String匹配模式但它不起作用。

Select-String "\\server\JavaVersions.txt" -Pattern "Java 8 Update 111 (64-bit)"

似乎不起作用,但以下内容将两者都带回来。

Select-String "\\server\JavaVersions.txt" -Pattern "Java 8 Update 111"

有谁知道为什么带括号的那个不起作用?是解析问题吗?我真的需要能够在(64-bit)另一个之前获得一个并单独采取行动。

4

3 回答 3

3

您必须转义特殊的正则表达式字符。在你的情况下括号。

Select-String '\\server\JavaVersions.txt' -pattern "Java 8 Update 111 \(64-bit\)"

https://www.regular-expressions.info/characters.html

于 2017-12-20T11:36:22.807 回答
2

或者,用于-SimpleMatch关闭正则表达式匹配:

Select-String '\\server\JavaVersions.txt' -Pattern 'Java 8 Update 111 (64-bit)' -SimpleMatch

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/select-string?view=powershell-5.1

于 2017-12-20T11:41:58.473 回答
1

作为替代选项,如果您不需要使用正则表达式进行匹配,则可以使用以下-SimpleMatch参数:

Select-String '\\server\JavaVersions.txt' -SimpleMatch "Java 8 Update 111 (64-bit)"

然后,您不需要进行任何正则表达式转义。

于 2017-12-20T11:42:06.327 回答