gpt4 book ai didi

string - - 检查字符串是否包含路径时匹配失败

转载 作者:行者123 更新时间:2023-12-02 01:56:43 25 4
gpt4 key购买 nike

我有一个字符串列表,需要检查每个项目以查看它是否包含某个字符串 $path,其中该字符串应包含 unc 路径和 $path > 也是一个 unc 路径。

例如:

"RW \\test" -match "\\test"

返回True,因为\\test包含在RW\\test中。太棒了。

那么为什么会返回 False ? :

"RW \\test\te" -match "\\test\te"

起初,我认为单个反斜杠可能在某种程度上充当了转义字符(即使在 PowerShell 中应该是 `)

所以我尝试了

"RW \\test\\te" -match "\\test\\te"

但这也会返回False ....

为什么?

最佳答案

您需要在 -match 运算符右侧的正则表达式中使用反斜杠转义两个反斜杠。

PS /> "RW \\test\te" -match "\\\\test\\te"
True

结果如下:

PS /> $matches[0]
\\test\te

您还可以对此进行扩展,以在正则表达式中使用命名捕获。命名捕获只是为正则表达式内的各个捕获提供友好的名称,使它们更容易作为 $matches 变量上的属性(而不是数字索引)进行引用。

PS /> "RW \\test\te" -match "(?<UNCPath>\\\\test\\te)"
True
PS /> $matches.UNCPath
\\test\te

请记住,反引号字符用于转义 PowerShell 双引号字符串中的某些特殊字符。但是,对于 -match 运算符,您将调用 .NET 正则表达式引擎。在 .NET 正则表达式引擎中,反斜杠用于转义正则表达式上下文中的特殊字符。因此,在此示例中,反引号转义字符不适用。

另外,请确保您没有转义源字符串中-match左侧的特殊字符运算符(operator)。您的最终示例不匹配的原因是您添加了第二个 \,但仅在右侧的正则表达式中转义了一个 \ -match 运算符。

关于string - - 检查字符串是否包含路径时匹配失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49419368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com