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

如何仅捕获目标括号内子字符串?PowerShell正则表达式问题

提取Markdown链接中的文本内容

原PowerShell代码

$String = @'
the fox [GO Here] jumped up
HERE
Using [IMB](www.IMB.com)
Using [Xerox](www.Xerox.com)
Using [Banana](www.Banana.com)
the fox [GO Here] jumped up
'@

$String -replace "\[(.*?)\]\(", "$1"

实际执行输出

the fox  jumped up
Using (www.foxtrot.com)
Using (www.IMB.com)
Using (www.Xerox.com)
Using (www.Banana.com)
the fox  jumped up

期望输出

IMB
Xerox
Banana

解决方案

原代码用-replace仅替换了字符串局部内容,无法直接提取目标文本。要实现需求,需先匹配所有符合Markdown链接格式的内容,再提取其中的文本部分:

$String = @'
the fox [GO Here] jumped up
HERE
Using [IMB](www.IMB.com)
Using [Xerox](www.Xerox.com)
Using [Banana](www.Banana.com)
the fox [GO Here] jumped up
'@

# 匹配所有「[文本](链接)」格式的内容,提取括号内的文本
[regex]::Matches($String, '\[([^\]]+)\]\([^)]+\)') | ForEach-Object {
    $_.Groups[1].Value
}

正则说明

  • \[([^\]]+)\]:匹配[开头的部分,捕获[和]之间的所有非]字符(即需要提取的链接文本)
  • \([^)]+\):匹配后面的(...)链接地址部分,确保只匹配完整的Markdown链接结构
  • [regex]::Matches()返回所有符合规则的匹配项,通过Groups[1]获取每个匹配中捕获的文本内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 05:42:24