我一直陷入其中,我最終使兩個正則表達式找到正則表達式查找時間值
我(因爲如0-9一個腳本,另一個是10-99額外號)微妙的變化情況通常使用[0-9]
查找只有一個數字的字符串,然後[0-9][0-9]
查找具有多個數字的字符串,是否有更好的通配符?
前。什麼表情,我會用同時找到字符串其次 6:45 AM and 10:52 PM
我一直陷入其中,我最終使兩個正則表達式找到正則表達式查找時間值
我(因爲如0-9一個腳本,另一個是10-99額外號)微妙的變化情況通常使用[0-9]
查找只有一個數字的字符串,然後[0-9][0-9]
查找具有多個數字的字符串,是否有更好的通配符?
前。什麼表情,我會用同時找到字符串其次 6:45 AM and 10:52 PM
您可以指定用花括號重複。 [0-9]{2,5}
匹配兩到五位數字。所以你可以使用[0-9]{1,2}
來匹配一個或兩個。
[0-9]{1,2}:[0-9]{2} (AM|PM)
我個人喜歡使用\d
爲數字,從而
\d{1,2}:\d{2} (AM|PM)
[0-9]
1或2次,隨後:
[0-9]{1,2}:[0-9]{2}\s(AM|PM)
或者是有效時間:
(?:[1-9]|1[0-2]):[0-9]{2}\s(?:AM|PM)
如果你正在尋找一個時間模式,你會這樣做:
\d{1,2}:\d{1,2} (AM|PM)
或者更具體的時間正則表達式
[0-1]{0,1}[0-9]{1,2}:[0-5][0-9] (AM|PM)
如果我有一個包含一個文件:
1 ABC
2 123XYZ
3 6:45 AM
4 123DHD
5 ABC
6下午10點52
7 CDE
並運行下列
$>grep -P '6:45\sAM|10:52\sPM' temp
6:45 AM
10:52 PM
$>.
應該做的伎倆(-P是一個perl至REGx)
編輯:
P也許我誤解了,如果我只是想找個時間,其他答案是非常好的,但你似乎是在特定的時間之後。其他人將以HH:MM格式與任何時間匹配。總的來說,我相信你以後的項目將會是|在這種情況下使用管道字符以允許替代短語並且{n,m}匹配n-m次{1,2}將匹配1-2次等等。
就像其他的答案,除了AM/PM未被捕獲,這應該是更有效的
\d{1,2}:\d{1,2}\s(?:AM|PM)
它可以是能夠檢查所有類型的時間格式:
例如12:05PM, 3:19AM, 04:25PM, 23:52PM
my $time = "12:52AM";
if ($time =~ /^[01]?[0-9]\:[0-5][0-9](AM|PM)/) {
print "Right Time Dude...";
}
else { print "Wrong time Dude"; }
這是你想要的正則表達式。
/^[01]?[0-9]\:[0-5][0-9](AM|PM)/
有了這個字符串作爲輸入:
Sat, 6 May 2017 02:08:08 +0000
我這樣做,正則表達式來得到一個或兩個數字組合:
[0-9]*:[0-9]*:[0-9]*
哎,我是不是經過特定的時間,我給了這兩個例子來說明我需要找到的價值中最極端的差異。謝謝您的回覆! – CQM 2011-06-07 16:00:52
沒問題。我很高興你很快找到了合適的答案。 – matchew 2011-06-07 16:08:34