У меня есть регулярное выражение: r'((\+91|0)?\s?\d{10})'
Я пытаюсь сопоставить числа типа +91 1234567890
, 1234567790
, 01234567890
.
Эти цифры не должны совпадать: 1234568901112
, потому что оно не начинается с +91 или 0 или не имеет только 10 чисел:
Когда я пытаюсь использовать re.findall()
:
re.findall(r'((\+91|0)?\s?\d{10})', '+91 1234567890, 1234567790, 01234567890, 1234568901112')
[('+91 1234567890', '+91'),
(' 1234567790', ''),
(' 0123456789', ''),
(' 1234568901', '')]
Вы можете заметить, что в третьем и четвертом индексе вывод не то, что я хочу.
Мой ожидаемый результат в третьем индексе - 01234568890, и потому что он начинается с 0 и сопровождается 10 символами Но он показывает только первые 10 символов. Также я не хочу вывод в 4-м индексе, потому что это число не полностью совпадает. Так что либо оно соответствует полному слову / строке, либо неверно.
Есть ли еще какие-нибудь регулярные выражения, которые я могу использовать? Или функция? Что я здесь не так делаю?
Ожидаемый результат:
[('+91 1234567890','1234567790', '01234567890']
Пожалуйста, дайте мне знать, если понадобятся дополнительные разъяснения.