次のような文字列があります。
<name>-<gender>-<age>.jpg
私は自分が受け入れる限り、非常にリベラルになりたいと思っています。要件は次のとおりです。
<name>
コンポーネントが必要です。.jpg
ファイル拡張子が必要です- 最終結果が次の順列のいずれかである限り、コンポーネントを空白のままにすることも、完全に除外することもできます。
<name>.jpg
<name>-<gender>.jpg
<name>-<gender>-<age>.jpg
有効と見なされるものの例:
Beamin-M.jpg
Jean.jpg
Maria-F-23.jpg
正規表現を使用して文字列の各コンポーネントを分解したいのですが、ダッシュ()をキャプチャしたくありません-
。キャプチャしていないグループを使用しようとしましたが、探していた結果を得ることができませんでした。
>>> import re
>>> r = re.compile(r'([^\-]*)((?:\-)[^\-]*)?((?:\-)[^\-]*)?\.jpg')
>>> for d in (
... 'Beamin-M.jpg',
... 'Jean.jpg',
... 'Maria-F-23.jpg',
... ):
... print r.match(d).groups()
...
('Beamin', '-M', None)
('Jean', None, None)
('Maria', '-F', '-23')
誰か提案はありますか?