删除数组

时间:2017-08-22 10:19:08

标签: regex powershell

所以我在目录中创建一个特定pkg的所有版本的数组 我想要做的是删除版本号以外的所有字符 第一个数组包含

等信息

GoogleChrome.45.45.34.nupkg GoogleChrome.34.28.34.nupkg

所以我需要的输出是 45.45.34 34.28.34

$dirList = Get-ChildItem $sourceDir -Recurse -Include "*.nupkg" -Exclude 
$pkgExclude | 
   Foreach-Object {$_.Name}

$reg = '.*[0-9]*.nupkg'
$appName ='GoogleChrome'

$ouText = $dirList | Select-String $appName$reg -AllMatches | % { 
$_.Matches.Value }
$ouText
$verReg='(\d+)(.)(?!nupkg)'

最后一个正则表达式符合我想要保留的模式,但我无法弄清楚如何提取我不需要的东西。

2 个答案:

答案 0 :(得分:2)

如果从头开始应用正确的模式,则无需后处理匹配。

要在.GoogleChrome.之间提取.nupkg个分开的数字,您可以使用

Select-String '(?<=GoogleChrome\.)[\d.]+(?=\.nupkg)' -AllMatches

请参阅regex demo

<强>详情

  • (?<=GoogleChrome\.) - 该位置应以GoogleChrome. substring
  • 开头
  • [\d.]+ - 一个或多个数字或/和.
  • (?=\.nupkg) - 当前位置右侧必须有.nupkg

如果不应依赖.nupkg,请使用

Select-String '(?<=GoogleChrome\.)\d+(?:\.\d+)+' -AllMatches

此处,\d+(?:\.\d+)+将匹配一个或多个数字,后跟一个或多个.和1+位数,前提是GoogleChrome.

答案 1 :(得分:1)

(\d+.?)+(?!nupkg)

这会在匹配中为您提供所需的输出,请检查regex demo

相关问题