You need to enable JavaScript to run this app. 为什么PowerShell中的空字符串不匹配正则表达式'\s*'?
优惠活动
大模型
产品
解决方案
定价
更多

为什么PowerShell中的空字符串不匹配正则表达式'\s*'?

为什么空字符串没有被'\s*'匹配过滤?

核心原因

你混淆了PowerShell的字符串比较运算符和正则匹配运算符:

  • -ne 是逐字字符串比较运算符,执行完全字面量匹配,你写的 $_ -ne '\s*' 只是判断当前字符串是不是和字面量\s*完全相等,不会把\s*当作正则规则解析。
  • 你贴的第二段代码运行结果完全符合该逻辑:''、now、is都不等于字面量\s*,所以三个元素都被输出,和你观察到的结果一致。

正确实现方式

如果要按照正则规则过滤掉空字符串、全空白字符串,需要使用正则匹配运算符 -notmatch,并且加上首尾定位符确保匹配整个字符串:

@('now','','is') | ?{ $_ -notmatch '^\s*$' }

运行后输出结果为:

now
is

和预期完全一致。

内容的提问来源于stack exchange,提问作者lit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 16:24:03