所以我在目录中创建特定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)'

最后一个正则表达式与我要保留的内容匹配,但是我不知道如何提取不需要的内容。

最佳答案

如果从一开始就应用正确的模式,则无需对匹配进行后处理。

为了提取.GoogleChrome.之间的.nupkg分隔数字,您可以使用

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

regex demo

详细信息
  • (?<=GoogleChrome\.)-位置之前应加上GoogleChrome.子字符串
  • [\d.]+-一个或多个数字或/和.
  • (?=\.nupkg)-当前位置的右边必须有.nupkg

  • 如果不应依赖.nupkg,请使用
    Select-String '(?<=GoogleChrome\.)\d+(?:\.\d+)+' -AllMatches
    

    在这里,\d+(?:\.\d+)+将匹配1个或多个数字,然后匹配1个或多个出现的.和1+个数字,前提是带GoogleChrome.开头。

    09-27 16:53