def METHOD_NAME(expr, var_chars=VAR_CHARS):
    """
    Split up an expression by non alphanumeric characters, including underscore.
    Leave strings in-tact.
    #TODO ignore escaped quotes, use raw strings.
    Args:
        expr: an expression string
    Returns:
        a list of string tokens that form expr
    """
    toks = list()
    tok = ''
    quote = ''
    for char in expr:
        if quote or char in var_chars:
            if char == quote:
                quote = ''
            tok += char
        elif char in ("'", '"'):
            toks.append(tok)
            tok = char
            quote = char
        else:
            toks.append(tok)
            toks.append(char)
            tok = ''
    toks.append(tok)
    return [t for t in toks if t]