Как отделить кириллицу от латиницы и несколько своих условий

в данный момент я отделяю так:

words_a_z = [x for x in words if re.search('[a-z]', x) if
             x.startswith('var') != True and x.endswith('vz') != True and x[3].isnumeric() != True and x[
                 3].isnumeric() != True and x[9] + x[10].isnumeric() != True and x[15] + x[16] + x[
                 17].isnumeric() != True]

как это можно упростить?, то что знаки 9-10, а также 15-17 можно сгруппировать я в курсе

просто по хорошему у меня шаблон того, что нужно не пропустить такой:

var1vartz02tzvz000vz

после var цифры 1-6

после tz и vz любые цифры

вот со всеми условиями:

words_a_z = [x for x in words if re.search('[a-z]', x) if x.startswith('var') != True and x.endswith('vz') != True and x[3] != [1, 2, 3, 4, 5, 6] and x[4:8] != 'vartz' and x[9:10].isnumeric() != True and x[11:14] != 'tzvz' and x[15:17].isnumeric() != True]

проще это можно записать?

UPDATE:

мне нужно, чтобы в список НЕ попали

var1vartz02tzvz000vz
var1vartz04tzvz004vz
var1vartz04tzvz008vz
var1vartz04tzvz010vz
var1vartz04tzvz012vz
var1vartz04tzvz016vz
var1vartz04tzvz020vz

var могут быть 1-6

в tz и vz могут быть любые цифры в первом случае две цифры, во втором три цифры


Ответы (1 шт):

Автор решения: CrazyElf

Тут вроде довольно простое же регулярное выражение получается. Просто пишете ваши литералы и перемежаете их нужным количеством \d в тех местах, где возможны произвольные цифры:

import re

re_exclude = re.compile(r'var\dvartz\d\dtzvz\d\d\dvz')
words = '''var1vartz02tzvz000vz
var1vartz04tzvz004vz
var1vartz04tzvz008vz
var1vartz04tzvz010vz
var1vartz04tzvz012vz
var1vartz04tzvz016vz
var1vartz04tzvz020vz
somethingdifferent'''.split()
print([word for word in words if not re_exclude.match(word)])

Вывод:

['somethingdifferent']
→ Ссылка