首页 > 解决方案 > curl中数字范围的正则表达式

问题描述

我正在寻找从带有 curl 的网站下载一系列 png 文件。它们的编号从 b0000.png 到 b0373.png。不断收到错误消息“未找到匹配项”。

b0+\b([1-9]|[1-9][0-9]|100)\b.png我认为它可能适用于页面 b0000 到 b0100,但这不起作用。

标签: regexlinuxrange

解决方案


在您的模式b0+\b([1-9]|[1-9][0-9]|100)\b.png\b,这部分0+\b不起作用,因为 0 和来自以下交替的另一个数字之间没有字边界。

您也可以省略这部分中的单词边界\b.png并转义点以匹配它的字面意思。

如果您只想匹配零,您可以将 1-100 的部分设为可选,因为现在至少有一个来自预期交替的值。

可以缩短交替,使 0-9 部分可选[1-9][0-9]?


要从 to 匹配b0000.pngb0100.png您可以将模式更新为:

b0+(100|[1-9][0-9]?)?\.png

正则表达式演示

可以使用以下方法匹配从 0000 到 0373 的整个范围:

b0+([1-9][0-9]?|[12][0-9]{2}|3[0-6][0-9]|37[0-3])?\.png

正则表达式演示


推荐阅读