不存在日期的正则表达式编号范围

时间:2013-06-20 12:54:39

标签: regex

我正在尝试使用程序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下载所有适当的页面,我只需要通过并删除箔条。问题是搜索它搜索的3​​65个页面而不是搜索 1131并且搜索时间大约是搜索的12倍,因为它搜索所有不存在的日期并尝试不响应4次的页面。

然后我找到了一个解决方法:

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]

结果是正则表达式不像程序本身那样工作。我试着查一下,坦率地说不太了解它。

那么这看起来究竟应该如何?

我不需要排除正则表达式,因为它进入忽略列表。虽然它可能对其他人有用。

修改

开始

我希望程序只通过隔离无效/不存在的mmdd日期来显示照片上实际日期的图片。 我不知道程序使用什么样的正则表达式。从他们的网站:

  

以下字符在常规使用时具有特殊含义   表达式,如果你想使用,必须以反斜杠(\)作为前缀   它们是正则表达式中的文字。

     

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

     

^ =行的开头$ =行尾。 =匹配任何字符\ x =使用   文字字符x

     

有关正则表达式的详细说明,请访问   http://wikipedia.org/wiki/Regular_expression

结束

修改

1 个答案:

答案 0 :(得分: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])

如上所述,它可能会整整一年。再次取决于他们决定使用哪种正则表达引擎。