如何用PowerShell正则从Git提交主题提取工作项编号?
解决方案
当然可以,甚至可以跳过中间的替换步骤,直接从原始提交信息提取,效率更高。下面提供两种实现方式:
方式一:直接从原始Git提交信息提取
针对原始的git log输出,匹配两种格式的工作项编号:冒号后跟着的纯数字、#开头的数字串。代码如下:
# $gitHist 是 git log 返回的原始内容 $workItems = $gitHist | Select-String -Pattern '(?:^|:\s)(\d+)|#(\d+)' -AllMatches | ForEach-Object { $_.Matches | ForEach-Object { # 提取匹配到的数字分组,优先取第一个分组,为空则取第二个 $_.Groups[1].Value ?? $_.Groups[2].Value } } | Where-Object { $_ }
方式二:从已处理后的$log变量提取
如果要基于你已经处理好的$log内容提取,可根据工作项编号的特征(比如是5位及以上数字,或带#前缀)编写正则:
$workItems = $log | Select-String -Pattern '(?:#)?(\d{5,})' -AllMatches | ForEach-Object { $_.Matches.Groups[1].Value } | Where-Object { $_ }
后续使用
提取完成后,$workItems就是包含所有工作项编号的集合,可直接输出或存入数组:
# 输出所有工作项编号 $workItems # 存入数组变量备用 $workItemList = @($workItems)
内容的提问来源于stack exchange,提问作者Devin Quince
相关产品推荐
相关产品推荐

