2010-08-20 161 views
0

我在學習正則表達式,我試圖找到這個字符串day1otlk_XXXX.gif 其中4個X將是3到4個隨機數字。這是我到目前爲止我所關閉的?正則表達式幫助

qr/day1otlk_\d++\.gif/i 
+0

如果你特別希望3至4個數字(而不是2或更少,或5個或更多)使用\ d {3,4}。 \ d ++將匹配任意數量的數字。 – Pete 2010-08-20 19:39:52

回答

1

正則表達式應爲/day1otlk_(\d{3,4})\.gif/,也許/i爲不區分大小寫。如果它在字符串中,則可能需要/\bday1otlk_(\d{4})\.gif\b/而不是像"asdjklfhlday1otlk_5242.gifiasdytoi"之類的東西,而這可能不是您想要的。

{3,4}表示需要有三到四位數字,括號才能在\ 1或$ 1中捕獲這四位數字。

(獎金未要求回答:如果你需要三個或五個,那麼你不能這樣做,{3,5}將會得到三到五個,你需要\d{3}\d{2}?或者其他的東西。 )

+1

獎勵:'(\ d {3} | \ d {5})'。 – Svante 2010-08-20 19:46:59

+0

也適用,是的。可能在病理情況下效果更好。 – muhmuhten 2010-08-20 19:51:35

+2

@Svante:更好的做法是優化公共部分:'\ d {3}(\ d {2})?' – Ether 2010-08-20 20:24:37

1

非常接近。這應該這樣做...

day1otlk_\d{3,4}\.gif 

大括號{}允許您指定重複的字符{3,4}或類似{4}一個確切的數字的數量不等。

1

你用大括號指定一個範圍量詞:

qr/day1otlk_\d{3,4}\.gif/i 
1

可以指定將有3或4個數字與下列:

day1otlk_\d{3,4}\.gif 

{}repetition修飾符。這比*+更精確一些。您可以使用它來指定前一個模式的重複次數或重複範圍的確切數量。

a{m} - 正是米的
a{m,} - 至少米的
a{m,n} - 至少米,但至多n a的