2016-07-14 7 views
1

ich die Zeichenfolge erhalten möchten, die nach $ctrl Code-Schnipsel unter HTML-Code gibt es:String-Werte nach einem Muster Holen Sie mit Powershell

<div ng-if="$ctrl.CvReportModel.IsReady"> 
           ng-click="$ctrl.confirmation()"></cs-page-btn> 
       <cs-field field="$ctrl.CvReportModel.Product" ng-model="$ctrl.UploadedFile.Product"></cs-field> 
       <cs-field field="$ctrl.CvReportModel.Month" ng-model="$ctrl.UploadedFile.Month"></cs-field> 

So versuche ich, Ausgabe zu erhalten wie:

CvReportModel.IsReady 
confirmation() 
CvReportModel.Product 
CvReportModel.Month 

Ich versuche es mit Get-Content und Select-String aber immer noch nicht in der Lage, die gewünschte Ausgabe zu bekommen.

Antwort

3

Verwenden Sie das Get-Content Cmdlets Ihre Datei zu lesen und eine regex verwenden, um den gewünschten Inhalt zu holen:

$content = Get-Content 'your_file_path' -raw 
$matches = [regex]::Matches($content, '"\$ctrl\.([^"]+)') 
$matches | ForEach-Object { 
    $_.Groups[1].Value 
} 

Regex:

"\$ctrl\.[^"]+ 

Regular expression visualization

Ausgang:

CvReportModel.IsReady 
confirmation() 
CvReportModel.Product 
UploadedFile.Product 
CvReportModel.Month 
UploadedFile.Month 

Ein weiterer Ansatz, um die Select-String Cmdlets und ein regex mit positiver Lookbehind mit:

Select-String -Path $scripts.tmp -Pattern '(?<=\$ctrl\.)[^"]+' | 
    ForEach-Object { $_.Matches.Value } 

Ausgang:

CvReportModel.IsReady 
confirmation() 
CvReportModel.Product 
CvReportModel.Month 

Hinweis: Dies gibt nur die erste$ctrl.* Übereinstimmung jeder Zeile zurück. Aber da dies Ihrer gewünschten Ausgabe entspricht, könnte es für Sie nützlich sein.

+0

Was ist, wenn ich alle Übereinstimmungen in einer Zeile haben möchte? – harishr

Verwandte Themen