Я пытаюсь токенизировать строку из под-шаблонов, которые могут появляться в любом порядке. Подшаблоны - это подчеркивание, буквы или цифры. Например:
'ABC_123_DEF_456' would provide ('ABC', '_', '123', '_', 'DEF', '_', '456')
Вот приведенное регулярное выражение, дающее неожиданный результат:
>>> m = regex.match(r'^((_)|(\d+)|([[:alpha:]]+))+$', 'ABC_123_DEF_456')
>>> m.groups()
('456', '_', '456', 'DEF')
Обновления: - перестановки: три подшаблона могут появляться в любом порядке, например:
'ABC123__' would provide ('ABC', '123', '_', '_')