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

如何在PowerShell的正则表达式Pattern中正确使用$_变量

问题根因
  • PowerShell 中单引号包裹的字符串不会进行变量扩展,你写在'$_\/Directory\/Cars\/Sign.jpg'里的$_会被识别为纯文本,而非外层ForEach-Object遍历的当前行变量,导致匹配规则和预期完全不符。
正确实现方式

将Pattern改为双引号包裹即可让$_变量被正常解析,同时建议对变量内容做正则转义,避免变量自带的特殊字符影响匹配结果:

Get-Content ..\myfile.txt | ForEach-Object {
     # 双引号支持变量扩展,[regex]::Escape用于转义变量中的正则特殊字符
     $counter=(gc *.log | Select-String -Pattern "$([regex]::Escape($_))\/Directory\/Cars\/Sign.jpg")
     # 如果需要直接获取匹配数量,可追加.Count属性:$counter.Count
}
  • 如果你确认$_读取的内容里没有.、*、?、()这类正则特殊字符,也可以简化为"$_\/Directory\/Cars\/Sign.jpg"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:42:00