Как решить проблему с условием вывода и регулярными выражениями в Python?
1)
 Попытки убрать блок else, либо заменить "Нет вхождения" на pass или None - выдают ошибку. 
a if q else b - это тернарный оператор. У него три аргумента (a, b, q) и результатом будет a или b в зависимости от истинности q.
pass там по синтаксису не подойдёт, поскольку это не значение, а ключевое слово.
Вам нужно вычислить выражение и результатом должно быть что-то что можно передать в print(). Если по else вы укажете пустую строку "", то print её напечатает. Не знаю устроит ли вас пустой абзац в консоли. Если нет, то смотрите решение, предложенное выше.

2) в предыдущем решении вы могли не заметить, но регекспы соединены через "|". Это сработает не для всех регекспов. Нужно быть осторожнее с такой конкатенацией. Вообще с регекспами надо поосторожнее. В большой силе большая ответственность.
Можно сделать цикл и поискать каждый регексп по отдельности. Так вам проще сохранить контроль над тем, что именно вы нашли и как на это реагировать.
import re

m_list = ["желтый\?", "красный\?", "синий\?"]
data = input().lower()
a = re.search("|".join(m_list), data)
if a:
    print("Есть вхождение")