Нет, у вас не может быть двух групп с одинаковыми именами, это как-то бросает вызов цели, не так ли?
Что вы, вероятно, действительно хотите, это:
^\s*(?P<NAME>\w\d{7}|R1_(?:\d{6}_){2})(01f\.foo|\.(?:bar|goo|moo|roo))$
Я реорганизовал твоё регулярное выражение насколько это возможно. Я сделал следующие предположения:
Вы хотите (поправьте меня, если я ошибаюсь):
- игнорировать пробелы в начале строки
- сопоставить одно из следующих значений в группу с именем "NAME":
- буква, за которой следуют 7 цифр или
"R1_"
и два раза (6 цифр + "_"
)
- сопровождается либо:
"01f.foo"
или
"."
и ("bar"
или "goo"
или "moo"
или "roo"
)
- с последующим концом строки
Вы могли бы также иметь в виду:
^\s*(?P<NAME>\w\d{7}01f|R1_(?:\d{6}_){2})\.(?:foo|bar|goo|moo|roo)$
Что такое:
- игнорировать пробелы в начале строки
- сопоставьте одно из следующих значений в группу с именем "NAME":
- буква, за которой следуют 7 цифр и "01f"
"R1_"
и два раза (6 цифр + "_"
)
- точка
"foo"
, "bar"
, "goo"
, "moo"
или "roo"
- конец строки