2015-08-08 102 views
0

分隔小時,我想出了下面的正則表達式:正則表達式匹配AM和PM

上午8:30,下午5:30
上午8:

(\d*.*\d[am|pm])\w 

下面的示例文本匹配下午5點

我想我的正則表達式來逃避連字符和返回下面的比賽:

8.30am 
5.30pm 
8am 
5pm 

不幸的是,目前我的正則表達式在每種情況下都匹配整行。

+0

您可以拆分 - 像'^(。+?) - (。+?)$' –

回答

2

您不能在字符類中使用「整個單詞」或替換。它當前匹配以下任何字符:(a,m,|,p,m)。一個類匹配任何一個字符從一個的字符。

如下我會寫正則表達式:

\d+(?:\.\d+)?[ap]m 

說明

\d+  # digits (0-9) (1 or more times) 
(?:  # group, but do not capture (optional): 
    \.  # '.' 
    \d+  # digits (0-9) (1 or more times) 
)?   # end of grouping 
[ap]  # any character of: 'a', 'p' 
m   # 'm' 

或者你可以甚至可能它簡化爲:

[\d.]+[ap]m