所以我在目录中创建特定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.
开头。