【发布时间】:2013-06-20 12:54:38
【问题描述】:
我正在尝试在程序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 并且搜索时间大约是 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
结束
编辑
【问题讨论】:
-
考虑避免使用正则表达式的日期。如果有问题的日期属于
September 1752。 -
你的问题不清楚,你的情况也不清楚。在正则表达式问题中最重要的是1) 语言或正则表达式风格2) 预期输入3) 预期输出。您可能对my previous answer 感兴趣,这表明可以匹配日期,但根本不实用。
标签: regex