Powershell管道和正则表达式,求值顺序

约根·西格瓦德森(JörgenSigvardsson)

这段代码实际上有效,我很好奇我是否很幸运(!?)并在Power Shell语言中发现了一个错误(这是伪代码式的,但它说明了我的问题):

$regex = "prefix([0-9]+)"
$collection = Get-Collection | Where-Object {$_.Name -match $regex} `
                             | ForEach-Object { [int] $Matches[1] }

输入基本上是对象,其属性Name可能采用“ prefix [Integer]”格式。如果是这种情况,我想提取该整数并将其插入新序列中。

这看似可行,但是感觉就像我在利用Power Shell语言中的实现细节。

您将如何解决这个问题?

埃里斯

问题是每个管道表达式都是一个闭包。

Where-Object 只会发送与管道匹配的项目,而不是上下文。

最简单易懂的方法是:

Get-Collection | ForEach-Object { if($_.Name -match $regex) { [int] $Matches[1] } }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

powerShell和正则表达式

来自分类Dev

正则表达式和Powershell

来自分类Dev

Django URL模式顺序和正则表达式

来自分类Dev

Perl正则表达式与管道

来自分类Dev

孤立的正则表达式如何求值

来自分类Dev

隔离正则表达式如何求值

来自分类Dev

正则表达式查询的顺序

来自分类Dev

Powershell正则表达式多行查找和替换

来自分类Dev

使用Powershell和正则表达式操作String

来自分类Dev

Powershell正则表达式多行查找和替换

来自分类Dev

Powershell正则表达式和e.164

来自分类Dev

Powershell和正则表达式变量

来自分类Dev

Powershell - 正则表达式和拆分/替换字符

来自分类Dev

如何在Powershell中使用正则表达式顺序替换反斜杠和换行符?

来自分类Dev

如何在Powershell中使用正则表达式顺序替换反斜杠和换行符?

来自分类Dev

PowerShell正则表达式多行

来自分类Dev

Powershell正则表达式损坏

来自分类Dev

Powershell If else正则表达式

来自分类Dev

了解Powershell正则表达式

来自分类Dev

PowerShell正则表达式过滤

来自分类Dev

正则表达式在Powershell中

来自分类Dev

PowerShell正则表达式多行

来自分类Dev

Powershell中的正则表达式

来自分类Dev

Powershell 正则表达式查询

来自分类Dev

将ls的管道结果输入Powershell中的命令,并使用正则表达式进行捕获

来自分类Dev

赋值子表达式的求值顺序

来自分类Dev

java表达式的求值顺序

来自分类Dev

正则表达式:(。*),(。*?)和。*

来自分类Dev

正则表达式和逗号