2016-05-23 14 views
-1

In PowerShell möchte ich Zeichenkette zwischen dem ersten : und ersten , oder ersten // (siehe Beispiele unten) erfassen.Suche nach Zeichenketten zwischen übereinstimmenden Mustern

Beispiel 1:

Iteration: Stündlich, Stunden: 0, Minuten: 15Frequency: "Minuten/Stunden: alle 15 Minuten"

Ausgang:

Stündlich

Beispiel 2:

// Iteration: Einmal // Frequenz: "Einmal: um 9:57 Uhr am Donnerstag, den 28. April 2016"

Ausgang:

Sobald

+0

': *.? (?, | \/\ /)' – rock321987

Antwort

2

Dies sollte für Sie arbeiten:

$string = 'Iteration: Hourly, Hours: 0, Minutes: 15Frequency: "Minutes/Hours: every 15 minutes"' 
$regex = ':\s*(.+?)(?=,|\/\/)' 
[regex]::Match($string, $regex).Groups[1].Value 

Demo

+1

Warum Sie ein Rohr und die doppelten Schrägstriche in der char-Klasse gelegt haben? –

+0

es wird auf passender single '/' – rock321987

+0

alles in der Zeichenklasse wird als einzelnes Zeichen behandelt. So wird es nicht sein '//' – rock321987

2

Sie können dies in verwenden powershell

'// Iteration: Once // Frequency: "Once: at 9:57 AM on Thursday, April 28, 2016"' -match ':\s*(.*?)(?:,|\/\/)' | Out-Null; $Matches[1] 
Verwandte Themen