(?P<name>)
のような名前付きグループは同じグループ名が使えない
「名前が一意な場合のみ、名前が付けれる」
teratailで質問してみたところ、 同じ名前は使えない ということがわかった。
Python - [正規表現]名前付きグループに同じ名前は使えないのでしょうか- Python|teratail
無理です。
グループ名は有効な Python 識別子でなければならず、グループ名は 1 個の正規表現内で一意でなければなりません。(Python 3.6.5リファレンスより)
なので、以下のようにhoge
というグループ名を2つ定義しようとするとエラーになる
>>> re.compile(r'(?:"(?P<hoge>\w+)"|(?P<hoge>\w+))')
...
re.error: redefinition of group name 'hoge' as group 2; was group 1 at position 23
redefinition of group name 'hoge' as group 2; was group 1 at position 23