Квантификатор * матчит любое число повторений (в том числе 0, то есть пустую строку); квантификатор + матчит одно или больше повторений. То есть найти группу из цифр можно выражением r'\d+'.
Кстати, в качестве квантификатора можно использовать число в фигурных скобких: r'\d{10}' - это r'\d\d...<десять раз>\d'.
А что непонятно? group() это метод класса re.match, который возвращает либо совпавшую строку целиком (если нет параметра, или параметр нулевой), либо какую-то отдельную подгруппу, индекс которой задаётся в параметре.
И вот небольшой примерчик зачем вообще нужен класс re.MatchCode: [Select]pattern = r"(\d+)-(\d+)"text = "My Phone number is 123-456789"match = re.search(pattern, text)if match: print("Phone first part: ", match.group(1)) print("Phone second part part: ", match.group(2))else: print("No match")
pattern = r"(\d+)-(\d+)"text = "My Phone number is 123-456789"match = re.search(pattern, text)if match: print("Phone first part: ", match.group(1)) print("Phone second part part: ", match.group(2))else: print("No match")
Интересно, но непонятно, как считают элементы внутри объекта матч. Считаются только выражения, состоящие из масок, а тупые символы (вроде дефиса тут) игнорятся?
И у меня почему-то ощущение, что стринги - это частный случай тупла, или мне так только кажется?
Считаются только выражения в скобках, остальные символы можно достать только из полного совпадения -- просто group().
Т.е. если нам нефатально отдельные части маски - то просто без скобок \d+-\d+ и выводим через result.group() - я правильно понял?
Не совсем. Туплы могут содержать разнотипичные данные, строки -- только символы.
ну так это и есть определение "частного случая". Стринги = особая категория туплов, которые могут содержать только символы
pair = (1, 2)x, y = pairprint(f'x: {x}, y: {y}')
x = 1y = 2x, y = y, x
А ещё с туплами можно делать так:Code: [Select]pair = (1, 2)x, y = pairprint(f'x: {x}, y: {y}')печатает "x: 1, y: 2".