(?:[a-z]+-\d{1,5})(?:, [a-z]+-\d{1,5})*\|.*
не понятно, что вы хотите захватить, поэтому я использую группы без захвата. Если вам нужно только логическое значение:
>>> regex = '[a-z]+-\d{1,5}(?:, [a-z]+-\d{1,5})*\|.*'
>>> re.match(regex, 'proj-234, proj-345|log message') is not None
True
Конечно, тот же результат может быть достигнут с помощью последовательности простых строковых методов:
prefs, _, log = subj.partition('|')
for group in prefs.split(', '):
pref, _, id5 = group.partition('-')
if id5.isdigit() and len(id5) <= 5 and pref.isalpha():
print(pref, id5)