2016-05-23 5 views
-1

В PowerShell я хочу захватить строку между первым : и первым , или первым // (см. Примеры ниже).Найти строку между совпадающими шаблонами

Пример 1:

итерационные: ежечасно, часы: 0, Протокол: 15Frequency: "минут/часов: каждые 15 минут"

Выход:

Ежечасно

Пример 2:

// Итерация: После // Частота: "один раз: в 9:57 утра в четверг, 28 апреля 2016"

Выход:

После

+0

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

ответ

2

Это должно работать на вас:

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

Demo

+1

Почему вы положили трубку и двойной косой черты в пределах класса полукокса? –

+0

он будет разбит на совпадение одного '/' – rock321987

+0

что-либо в символьном классе рассматривается как одиночный символ. Так оно не будет '//' – rock321987

2

Вы можете использовать это в powershell

'// Iteration: Once // Frequency: "Once: at 9:57 AM on Thursday, April 28, 2016"' -match ':\s*(.*?)(?:,|\/\/)' | Out-Null; $Matches[1] 
Смежные вопросы