2015-05-22 30 views
2

我想用一個正則表達式匹配字符串中的幾個模式添加一個分隔符並將它們添加到字符串或列表中。描述是我想要測試的字符串。正則表達式匹配字符串中的「時間」值

這裏是我想要匹配「01:00 02:00 03:00」 以前的嘗試,我能夠匹配「01:00」的內容,但我想匹配所有3個案件。

var pattern = @"^(?:(?:([01]?\d|2[0-3]):)?([0-5]?\d):)?([0-5]?\d)$"; 
var ReturnTime = ""; 
foreach(Match match in Regex.Matches(Description, pattern)) { 
    ReturnTime += match.Value + ";"; 
} 

回答

4

你必須刪除你的錨^$用於這一目的:

var pattern = @"(?:(?:([01]?\d|2[0-3]):)?([0-5]?\d):)?([0-5]?\d)"; 
      ^           ^

DEMO

0
(0[0-9]|1[1-2]):[0-5][0-9](?=[^0-9]) 

將匹配標準時間(Link),而

([0-1][0-9]|2[0-3]):[0-5][0-9](?=[^0-9]) 

將匹配軍事時間(Link)。

相關問題