我正在尝试编写自己的降价扩展,对于视频,我希望用户能够提供宽度和高度的可选值。可用的降价格式如下:
http:/vimeo.com/456456456[width,height]
http:/vimeo.com/456456456
http:/vimeo.com/456456456[,height]
http:/vimeo.com/456456456[width,]
我对第一部分没有疑问,但只有最后 - 宽度和高度。我当前的正则表达式看起来像:
rx = r'([^(]|^)(http|https)://(?:www.|)vimeo\.com/(?P<vimeoid>\d+)(?:\[(?P<width>\d+|),\s*,\s*(?P<height>\d+|)\]|)\S*'
实际上有趣的只是它的最后一部分:(?:\[(?P<width>\d+|),\s*,\s*(?P<height>\d+|)\]|)
。如果我提供宽度和高度的值,它工作正常。但是,如果我省略它或省略整个括号部分(应该没问题),我的代码仍然会返回捕获的组 for width
and height
with values None
。那不是我想要的。
我想如果 used 没有提供宽度或高度或提供空括号或根本没有提供它,那么宽度和高度的组不会评估。
UPD:也许这是 python 正则表达式的副作用 - 总是评估命名组,我不确定。