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

如何用PowerShell从Word文档提取全大写单词,正则匹配失效怎么解决?

PowerShell提取Word全大写单词问题修复方案

问题原因

  • 正则表达式语法不符合PowerShell规范:你写的/\b[A-Z]+\b/g是JavaScript等语言的正则写法,PowerShell的Select-String不需要用斜杠包裹正则内容,也不需要末尾的g全局匹配标识,默认就会扫描所有匹配项。
  • 未开启大小写敏感匹配:PowerShell的正则匹配默认不区分大小写,仅写[A-Z]也会命中小写字母,需要显式开启大小写敏感校验。

修复后的代码

将最后一行匹配逻辑替换为如下内容即可得到预期结果:

# 匹配所有全大写单词
$capwords = Get-Content $path | Select-String -Pattern '\b[A-Z]+\b' -CaseSensitive -AllMatches
# 直接提取匹配到的单词文本
$capwords.Matches.Value

如果需要对结果去重,可在末尾追加| Select-Object -Unique。

可选优化

你可以省去导出TXT文件的步骤,直接在内存中处理Word段落内容,减少磁盘IO,同时建议处理完成后释放Word COM对象,避免后台残留进程:

$capwords = @()
foreach ($para in $doc.Paragraphs) {
    $matchResult = [regex]::Matches($para.Range.Text, '\b[A-Z]+\b')
    if ($matchResult.Success) {
        $capwords += $matchResult.Value
    }
}

# 释放Word进程
$doc.Close()
$word.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($word) | Out-Null

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 19:54:00