Search the signals DB for signal named *signal*,
    and which action matches *action* in a case
    insensitive way.

    :param signal: Regex for signal name.
    :param action: Regex for default action.
    :param signals: Database of signals.

def search(signal='', action='', signals=SIGNALS):
    """
    Search the signals DB for signal named *signal*,
    and which action matches *action* in a case
    insensitive way.

    :param signal: Regex for signal name.
    :param action: Regex for default action.
    :param signals: Database of signals.
    """
    sig_re = re.compile(signal, re.IGNORECASE)
    act_re = re.compile(action, re.IGNORECASE)
    res = []
    for code in signals:
        sig, act, _ = signals[code]
        if sig_re.match(sig) and act_re.match(act):
            res.append(explain(code, signals=signals))
    return res