Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex curl中数字范围的正则表达式_Regex_Linux_Range - Fatal编程技术网

Regex curl中数字范围的正则表达式

Regex curl中数字范围的正则表达式,regex,linux,range,Regex,Linux,Range,我期待着下载一系列的png文件从一个网站与卷曲。它们的编号从b0000.png到b0373.png。不断获取错误消息“未找到匹配项” b0+\b([1-9]|[1-9][0-9]|100)\b.png是我认为从b000到b0100页可能的,但这不起作用。这对我来说很有用(如果curl中支持lookbehind?) 1)对于范围0000-0100: b0(0\d\d|100)\.png 2)对于范围0000-0373: b0[0-3]((?<=[0-2])\d|(?<=3)

我期待着下载一系列的png文件从一个网站与卷曲。它们的编号从b0000.png到b0373.png。不断获取错误消息“未找到匹配项”


b0+\b([1-9]|[1-9][0-9]|100)\b.png
是我认为从b000到b0100页可能的,但这不起作用。

这对我来说很有用(如果curl中支持lookbehind?)


1)对于范围
0000-0100

b0(0\d\d|100)\.png


2)对于范围
0000-0373

b0[0-3]((?<=[0-2])\d|(?<=3)[0-7])((?<=37)[0-3]|(?<!37)\d)\.png
b0[0-3](?

如果您愿意这样做,请使用非捕获组进行完全匹配:

b0[0-3](?:(?<=[0-2])\d|(?<=3)[0-7])(?:(?<=37)[0-3]|(?<!37)\d)\.png

b0[0-3](?:(?既然您提到了curl,也许您不需要regexp。
您可以选择以下方式:

for i in {0000..0373}; do curl http://example.org/b$i.png -O; done

PS:大括号扩展要求您从zsh而不是bash运行命令。

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

您还可以省略该部分
\b.png
中的单词边界,并转义点以逐字匹配

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

可以缩短替换时间,使0-9部件成为可选的
[1-9][0-9]?


要从
b0000.png
匹配到
b0100.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

我想我完全误读了这个问题。我想OP需要0000-0373的范围。这更有意义=)@JvdV不确定你是否误读了这个问题:)我只关注OP尝试的模式,不确定整个范围是否匹配。顺便说一句,我注意到这将匹配
b0.png
。但不确定这是否会是一个重大问题。@JvdV我想我们必须等待OP对此做出澄清