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

如何在PowerShell中提取字符串里方括号[]间的文本?

提取字符串中方括号内的文本(PowerShell解决方案)

你的核心需求是提取字符串里[]包裹的内容,原正则表达式存在两处关键问题:

  • 左方括号的断言写法错误,应该用(?<=\[)而非(?<=\[])
  • 结尾的断言(?=[-\)])限定了匹配内容后必须是-或),不符合你的示例场景

修正后的实现代码

# 示例输入数组
$FileDirRef = @(
    "/site/GD/[A33.4]Admin",
    "/site/HD/[D9.1]Communication"
)

# 正确匹配方括号内内容的正则
$pattern = '(?<=\[)[^\]]+(?=\])'

$results = switch -Regex ($FileDirRef) {
    $pattern {
        [PSCustomObject]@{
            String = $_
            Match  = $Matches[0]
        }
    }
    Default { }
}

# 输出提取结果
$results

正则表达式说明

  • (?<=\[):正向零宽断言,确保匹配内容的前导字符是左方括号[
  • [^\]]+:匹配任意数量(至少1个)非]的字符,这就是我们需要提取的目标内容
  • (?=\]):正向零宽断言,确保匹配内容的后续字符是右方括号]

多匹配场景扩展

如果单条字符串中存在多个方括号组(比如/site/[A1][B2]Test),可以添加-AllMatches参数捕获所有匹配项:

$results = switch -Regex -AllMatches ($FileDirRef) {
    $pattern {
        foreach ($match in $_.Matches) {
            [PSCustomObject]@{
                String = $_
                Match  = $match.Value
            }
        }
    }
    Default { }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 14:45:28