所以我在目录中创建一个特定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)'
最后一个正则表达式符合我想要保留的模式,但我无法弄清楚如何提取我不需要的东西。
答案 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