gpt4 book ai didi

regex - Powershell:匹配运算符返回 true 但 $matches 为 null

转载 作者:行者123 更新时间:2023-12-03 07:16:59 26 4
gpt4 key购买 nike

我正在使用正则表达式来匹配文件内容:

> (get-content $_) -match $somePattern
the line of text that matches the pattern

这返回 true,匹配,但是我的 $matches 变量仍然为空。

> $matches -eq $null
True

$matches 中不应该有匹配组吗?

最佳答案

严格来说,string -match ...collection -match ... 是两个不同的运算符。第一个获取 bool 值并填充$matches。第二个获取与模式匹配的每个集合项,但显然未填充 $matches

如果文件包含一行(第一个运算符有效),您的示例应该按您的预期工作。如果文件包含 2 行以上,则使用第二个运算符并且不设置 $matches

对于应用于集合的其他 bool 运算符也是如此。也就是说,collection -op ... 返回 item -op ... 为 true 的项目。

示例:

1..10 -gt 5 # 6 7 8 9 10
'apple', 'banana', 'orange' -match 'e' # apple, orange

如果使用得当,应用于集合的 bool 运算符会很方便。但它们也可能令人困惑并导致容易犯错误:

$object = @(1, $null, 2, $null)

# "not safe" comparison with $null, perhaps a mistake
if ($object -eq $null) {
'-eq gets @($null, $null) which is evaluated to $true by if!'
}

# safe comparison with $null
if ($null -eq $object) {
'this is not called'
}

另一个使用 -match-notmatch 的示例可能看起来令人困惑:

$object = 'apple', 'banana', 'orange'

if ($object -match 'e') {
'this is called'
}

if ($object -notmatch 'e') {
'this is also called, because "banana" is evaluated to $true by if!'
}

关于regex - Powershell:匹配运算符返回 true 但 $matches 为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8651905/

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