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

PowerShell正则表达式删除特殊字符间内容的求助

解决PowerShell正则替换保留前缀和文件名的问题

正确命令与正则表达式

要实现保留前缀(第一个\之前的内容)和文件名(最后一个\之后的内容),可以使用以下PowerShell命令:

Get-Content -Path .\src.txt | ForEach-Object { $_ -replace '\\.*\\', '' }

正则说明

  • \\:匹配单个反斜杠(正则中需用双反斜杠转义)
  • .*:贪婪匹配任意字符(包括多个反斜杠),确保从第一个\匹配到最后一个\
  • 整体效果:将第一个\到最后一个\之间的所有内容(包括这两个反斜杠)替换为空字符串,直接得到9123 file.txt

替代方案(显式捕获组)

如果需要更明确地保留前缀和文件名,可使用捕获组方式:

Get-Content -Path .\src.txt | ForEach-Object { $_ -replace '^(.*?)\\.*\\(.*)$', '$1$2' }
  • ^(.*?):捕获第一个\之前的前缀(非贪婪匹配避免过度捕获)
  • (.*)$:捕获最后一个\之后的文件名
  • $1$2:将匹配结果替换为两个捕获组的内容

原命令的问题分析

  1. 错误使用Where-Object:Where-Object用于过滤行,而非转换内容,应改用ForEach-Object处理每一行
  2. 正则语法错误:原正则[.*^\].*[(?!.*)$.*]使用了字符类(方括号),仅匹配单个字符而非连续字符串,导致错误删除了文件名中的部分字符(如f、o、l等),最终得到9123 txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 08:32:12