Regex curl中数字范围的正则表达式
我期待着下载一系列的png文件从一个网站与卷曲。它们的编号从b0000.png到b0373.png。不断获取错误消息“未找到匹配项”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)
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对此做出澄清