2015-04-06 78 views
0

我試圖從下面的列表中匹配特定的數字模式。 我的要求是隻匹配report.20150325report.20150331。請幫忙。用於匹配數字模式的正則表達式

report.20150319 
report.20150320 
report.20150321 
report.20150322 
report.20150323 
report.20150324 
report.20150325 
report.20150326 
report.20150327 
report.20150328 
report.20150329 
report.20150330 
report.20150331 

回答

1

這很簡單,以匹配25至31使用正則表達式2[5-9]|3[01]

下面是完整的正則表達式

(report\.201503(2[5-9]|3[01])) 

DEMO

說明的2[5-9]|3[01]

2 followed by a single character in the range between 5 and 9 
OR 
3 followed by 0 or 1 
0

您可以使用類似如此的東西:^report\.201503(2[5-9]|3[01])$/gm(使用this工具構建)。

它應該與您以後的報告相匹配,如here所示。

0

好像你想要打印符合兩個獨立圖案的線條(包括與圖案相匹配的線條)之間的線條。

$ sed -n '/^report\.20150325$/,/^report\.20150331$/p' file 
report.20150325 
report.20150326 
report.20150327 
report.20150328 
report.20150329 
report.20150330 
report.20150331 
+0

'的awk「/report.20150325/{f=1}/report.20150331/{print;f=0 } f'file' – 2015-04-06 07:38:25

+0

記住要固定您的RE並逃離您想從字面上理解的元字符。 – 2015-04-06 12:55:54

0

正則表達式匹配並不總是正確的方法。在這裏,你問到匹配的字符串,然後一個號碼,以便使用字符串和數字比較:

$ awk -F'.' '$1=="report" && ($2>=20150325) && ($2<=20150331)' file 
report.20150325 
report.20150326 
report.20150327 
report.20150328 
report.20150329 
report.20150330 
report.20150331