私は独自のマークダウン拡張機能を作成しようとしています。ビデオでは、ユーザーが幅と高さのオプションの値を提供できるようにしたいと考えています。利用可能なマークダウンの形式は次のとおりです。
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+|)\]|)
. 幅と高さの値を指定すると、正常に機能します。しかし、それを省略したり、ブラケット部分全体を省略したりしても (問題ないはずです)、コードはキャプチャされたグループを forwidth
とheight
with valuesで返しますNone
。それは私が望むものではありません。
used が幅または高さを提供しないか、空の括弧を提供するか、まったく提供しない場合、幅と高さのグループは評価されません。
UPD: Python の正規表現の副作用かもしれません。名前付きグループを常に評価するかどうかはわかりません。