2013-06-20 84 views
1

我試圖在程序Bulk Image Downloader中使用忽略列表,並且包含/排除列表使用正則表達式。該方案可以讓你搜索一個範圍,如:不存在日期的正則表達式編號範圍

http://example.com/gallery/page[1-99].htm 

拔出從頁面

example.com/gallery/page1.htm 
example.com/gallery/page2.htm 
… 
example.com/gallery/page99.htm 

夠簡單吧圖片?搜索使用"yyyymmdd"格式的網站而不是使用簡單的"page#"格式時會發生此問題。

我想出了這個

example.com/[yyyy0101-yyyy1231].html 

與任何一年我下載從到位yyyy拉所有適當的網頁,我只是經歷和刪除穀殼。問題在於搜索不是搜索365頁而是搜索 1131,因爲它搜索所有不存在的日期並嘗試不響應4次的頁面,所以搜索時間大約是搜索的12倍。

然後我發現這個使用一種變通方法:

example.com/images/[yyyy0101-yyyy1231].png 

因爲一些我從網上下載的網站都有自己的形象都在一個地方。但是我遇到了同樣的問題,但相反。圖像搜索幾乎立即結束,但所有不存在的日期都有虛假圖像(程序會給它們佔位符),而這些圖像在下載過程中需要經過一段時間,而不是在搜索時進行。

所以我試圖寫一個排除列表的正則表達式,它會自動消除在不存在的日期範圍中發現的任何東西。我甚至查詢了每個月有多少天,並且確保在2月29日閏年離開。看哪。

[0132-0200] 
[0230-0300] 
[0332-0400] 
[0431-0500] 
[0532-0600] 
[0631-0700] 
[0732-0800] 
[0832-0900] 
[0931-1000] 
[1032-1100] 
[1131-1200] 

原來的正則表達式並不像程序本身那樣工作。我試圖查找它,坦率地說,它並沒有很好地理解它。

那麼究竟應該如何看待?

我不需要任何排除正則表達式,因爲它是進入忽略列表。雖然它可能對其他人有用。

編輯

開始

我想通過隔離出月日日期是無效的/不存在的程序只顯示圖片從實際日期上的照片。 我不知道該程序使用了什麼Regex的味道。從他們的網站:在正規 表達式中使用,且必須由一個反斜槓(\)前綴時,如果你想使用 它們當作文字在你的正則表達式

下面的字符有着特殊的含義。

[, \, ^, $, ., |, ?, *, +, (,), /

^=起始行$ =線的端部的。 =匹配任何字符\ X =使用 文字字符x

正則表達式的詳細說明,請訪問 http://wikipedia.org/wiki/Regular_expression

結束

編輯

+0

考慮避免日期的正則表達式。如果該日期屬於「1752年9月」,該怎麼辦? – devnull

+2

你的問題不清楚,你的情況不清楚。在正則表達式問題中最重要的是** 1)**語言或正則表達式** 2)**預期輸入** 3)**預期輸出。你可能對[我以前的回答](http://stackoverflow.com/a/17010983/)感興趣,它表明可以匹配日期,但是根本不可行。 – HamZa

回答

0

根據什麼Bulk Image Downloader用作正則表達式引擎,您可以嘗試:

example.com/[201301-201312](0[1-9]|[1-2][0-9]|3[0-1]).html 

這應該讓你選擇有效的月份爲一年你選擇

[201301-201312] 

然後日期是01 - 09

0[1-9] 

10-29

[1 -2] [0-9]

或30,31

3[0-1] 

合併日期部分爲一組具有或操作

(0[1-9]|[1-2][0-9]|3[0-1]) 

把它放在一起如上所述,它可能整整一年的工作。再次取決於他們決定使用哪個正則表達式引擎。

+0

由於這是核心正則表達式的功能,沒有任何棘手,它將在任何正則表達式引擎中以相同的方式工作。 (相反,如果它不起作用,它不會被解釋爲正則表達式/而是其他東西。) – Patashu