我想分析其可能包含混合的模式,比如正則表達式匹配的時間跨度
1-4pm
1pm-5pm
noon to 11pm
noon to midnight
etc.
我想提取開始和結束時間的數據。我如何通過正則表達式來實現這一點。我知道我無法支持所有可能的輸入格式,但我怎樣才能實現最大限度的支持?
這是我的表達 ^(([AZ] +)?)\ S *([0-9] {1,2} [:] [0-9] {0 ((?[az] +)?| 2} \ s * [am | pm | am | pm] [。])?\ s * [ - | to | \ |/| =] \ s (?[0-9] {1,2} [:]?[0-9] {0,2} \ s * [am | pm | am | pm] [。]))?$
它涵蓋了幾乎所有的組合。我只想知道在這個正則表達式中是否有任何優化。 在這裏,dayPart將消耗所有開始的非數字字符來處理TimeSpan是以中午,午夜等開始,還是像週日我們可以忽略的任何值。 startTime會嘗試以任何格式消耗任何時間,如果它在那裏。 endPart和EndTime也一樣。
你不應該逃避分隔符表達式中的破折號,這是不必要的。 +1的方法。 – Tomalak 2009-08-05 13:27:46
嚴格來說,這是沒有必要的。這是我習慣了的習慣,因爲你必須在一個範圍內特別對待「 - 」。我傾向於在任何地方自動保護它。 –
2009-08-05 13:41:44