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

PowerShell正则表达式匹配问题求助:提取指定格式构建编号

解决PowerShell中提取指定格式构建编号的正则问题

问题分析

你需要从字符串#1737 - 1725-74033 - x64,x86中提取格式为数字-数字的构建编号1725-74033,原正则[^#0-9)][0-9-]+[0-9]在PowerShell中失效的原因是:

  • [^#0-9)]会匹配非#/数字/)的任意字符(比如字符串开头的空格和-)
  • [0-9-]+的贪婪匹配会错误包含无关的-符号,导致匹配结果偏离预期

解决方案

使用正向前后断言精准定位目标内容,避免匹配无关字符。以下是两种PowerShell实现方式:

方式1:使用-match操作符

$inputStr = "#1737 - 1725-74033 - x64,x86"
# 匹配被" - "包裹的数字-数字格式内容
if ($inputStr -match '(?<= - )\d+-\d+(?= - )') {
    $matches[0]  # 输出结果:1725-74033
}

方式2:使用Select-String

"#1737 - 1725-74033 - x64,x86" | 
    Select-String -Pattern '(?<= - )\d+-\d+(?= - )' | 
    ForEach-Object { $_.Matches.Value }

正则说明

  • (?<= - ):正向后顾断言,确保目标内容前是-
  • \d+-\d+:匹配1个以上数字+连字符+1个以上数字的格式
  • (?= - ):正向前瞻断言,确保目标内容后是-

这种写法直接精准提取目标构建编号,无需额外处理x86/x64或开头空格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 12:05:16