You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell带正则的Switch语句问题:无点字符条件异常触发

问题分析与解决

问题根源

你第三个条件里的正则"[^.]"逻辑错误:它仅匹配单个非点字符,只要字符串中存在至少一个非点字符就会触发匹配。所以不管输入是test.psd(含t/e等非点字符)、.psd(含p/s等非点字符)还是test,都会触发这个分支,导致不符合预期。

修正方案

要匹配整个字符串完全不含点的场景,需要用锚定整个字符串的正则:"^[^.]+$",同时给每个分支加上break避免多分支触发(PowerShell的switch默认会继续匹配后续分支)。

修正后的代码:

$NewName = "test.psd"
switch -Regex ($NewName) {
    "^\..*" { 
        'Entry Starts with a "."'
        break
    }
    ".*\..*" { 
        'Entry does not start with a "."'
        break
    }
    "^[^.]+$" { 
        'No "." present'
        break
    }
}

正则说明

  • ^[^.]+$:
    • ^ 锚定字符串起始位置
    • [^.]+ 匹配1个及以上非点字符
    • $ 锚定字符串结束位置
      组合起来就确保整个字符串中没有任何点字符,才会触发该分支。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 23:45:34