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

如何用PowerShell提取文件中括号内的指定字符串(非整行)?

问题描述

现有一文件,内容包含多组位于括号内的国家名称字符串,文件内容示例如下:

This (USA) is a bad text (France)
with countries (Luxembourg) between () (Germany)
Whith multiple (Luxembourg) countries (USA) per line
and some lines without countries
To search (France) and find (Belgique) duplicate
countries (USA)   

需求是提取所有括号内的国家名称,每个名称单独显示一行,预期输出如下:

USA
France
Luxembourg
Germany
Luxembourg
USA
France
Belgique
USA

在BS2000大型机上使用BS2EDT编辑器的解决方案为:

list-string /(?<=\()[^)]+(?=\))/,from=lettre.pays.txt

请问使用PowerShell实现该需求的最简方案是什么?


PowerShell最简解决方案

直接执行以下命令即可:

Select-String -Path lettre.pays.txt -Pattern '\(([^)]+)\)' -AllMatches | ForEach-Object { $_.Matches } | ForEach-Object { $_.Groups[1].Value }

命令说明:

  • Select-String:读取目标文件并通过正则匹配内容,-AllMatches参数确保提取每行中的所有匹配项(而非仅第一个)
  • 正则表达式\(([^)]+)\):精准匹配被括号包裹的内容,其中([^)]+)专门捕获括号内的国家名称(排除括号本身)
  • 连续两个ForEach-Object:先展开所有匹配结果,再逐个提取捕获到的国家名称,最终输出每行一个名称的格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 03:20:30