import re


def convert_numerical(s):
    """ try to convert a string tu numerical

    :param str s: input string
    :return:

    >>> convert_numerical('-1')
    -1
    >>> convert_numerical('-2.0')
    -2.0
    >>> convert_numerical('.1')
    0.1
    >>> convert_numerical('-0.')
    -0.0
    >>> convert_numerical('abc58')
    'abc58'
    """
    re_int = re.compile(r"^[-]?\d+$")
    re_float1 = re.compile(r"^[-]?\d+.\d*$")
    re_float2 = re.compile(r"^[-]?\d*.\d+$")

    if re_int.match(str(s)) is not None:
        return int(s)
    elif re_float1.match(str(s)) is not None:
        return float(s)
    elif re_float2.match(str(s)) is not None:
        return float(s)
    else:
        return s