import exrex trend = '(A|B|C)_STRING' trend2 = 'STRING_(A|B)_STRING_(C|D)' >>> list(exrex.generate(trend)) [u'A_STRING', u'B_STRING', u'C_STRING'] >>> list(exrex.generate(trend2)) [u'STRING_A_STRING_C', u'STRING_A_STRING_D', u'STRING_B_STRING_C', u'STRING_B_STRING_D']