2017-08-22 5 views
1

ディレクトリ内の特定の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

'Select-String '(?<= GoogleChrome \。)\ d +(?:\。\ d +)+' -AllMatches'を試してください –

答えて

2

が一致して確認してください。もしregex demo

詳細

  • (?<=GoogleChrome\.)を見る

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

    使用できるGoogleChrome.間及び.nupkg.分離桁を抽出するために

    - 位置を有する先行しなければなりませんGoogleChrome.サブストリング

  • [\d.]+ - 一つ以上の数字または/および.
  • (?=\.nupkg) - 現在位置のすぐ右に.nupkgが存在しなければなりません。

.nupkgに依拠すべきではない場合、ここ

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

を使用し、\d+(?:\.\d+)+は1桁以上がGoogleChrome.が先行する場合にのみ.と1+数字の1回の以上の繰り返しが続く一致します。

+1

ありがとうございます! – rndy

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

これはあなたの試合での所望の出力を与えるだろう、あなたは最初から右のパターンを適用する場合は、プロセスを投稿する必要はありませんregex demo

関連する問題