import re


def validar_rg(rg):
    """
    Valida RGs, retornando apenas a string de números válida.

    # RGs errados
    >>> validar_rg('abcdefghi')
    False
    >>> validar_rg('123')
    False
    >>> validar_rg('')
    False
    >>> validar_rg(None)
    False
    >>> validar_rg('123456789')
    False

    # CPFs corretos
    >>> validar_rg('293748767')
    '293748767'
    >>> validar_rg('29.374.876-7')
    '293748767'
    >>> validar_rg('  29 374 876 7  ')
    '293748767'
    """
    rg = ''.join(re.findall('\d', str(rg)))

    if (not rg) or (len(rg) < 9):
        return False

    # Pega apenas os 8 primeiros dígitos do RG e gera os 1 dígitos que faltam

    inteiros = [int(digit) for digit in rg if digit.isdigit()]
    novo = inteiros[:8]
    r = sum([(9-i)*v for i, v in enumerate(novo)]) % 11  # type: int

    if r != 10:
        f = r
    else:
        f = 0
    novo.append(f)

    # Se o número gerado coincidir com o número original, é válido
    if novo == inteiros:
        return int(rg)
    return False