2016-05-23 49 views
-1

在PowerShell中,我想捕獲第一個:和第一個,或第一個//(請參閱下面的示例)之間的字符串。查找匹配模式之間的字符串

實施例1:

迭代:每小時,小時數:0,分鐘:15Frequency: 「分鐘/小時:每隔15分鐘」

輸出:

每小時

實施例2:

//迭代:一旦//頻率: 「一旦:在上午09點57分,週四,2016年4月28日」

輸出:

一旦

+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]