>>> re.findall(r"\-?\d*", "q-15") ['', '-15', ''] >>> re.findall(r"\-?\d+", "q-15") ['-15'] >>>
Очевидно, первый шаблон допускает совпадение с ничем. ни минуса ни цифр, вот вы это и выводите.
>>> re.findall(r"\-?\d*", "q-15") ['', '-15', ''] >>> re.findall(r"\-?\d+", "q-15") ['-15'] >>>
vrabey
как написать функцию
>>> import re >>> >>> def f(s): ... match = re.search(r'-?\d+', s) ... return match and match.group() ... >>> for i in "-1", "2d", "-3sf", "4": ... print(f(i)) ... -1 2 -3 4 >>>
doza_andточно. Вот я протормозил, findall же надо было сделать чтоб полностью глянуть. Надо внимательнее быть, на первый взгляд мне показалось, что group(0) должен вывести искомое.
>>> s = 'dgg35l-6' >>> pattern = '\-?\d*' >>> re.findall(pattern, s) ['', '', '', '35', '', '-6', ''] >>> pattern = '\-?\d+' >>> re.findall(pattern, s) ['35', '-6']