У меня есть этот код регулярного выражения, который я использую в своем коде:
pattern = re.compile('\d{3,4}(\/?)(\d{6,6})')
m= pattern.match('0481/987421')
if m:
print "yes"
else:
print "no"
Это регулярное выражение должно работать для телефонных номеров следующим образом: dddd/dddddddd, то есть сначала 3 или 4 цифры, затем косая черта или нет, а затем ровно 6 цифр. Работает нормально, например 21/484135 не работает и другие неправильные вещи тоже не работают. Но проблема этого регулярного выражения в том, что когда мои первые символы верны, и я набираю за ним что-то случайное, оно все равно печатает «да». Я имею в виду что-то вроде этого: 0481/9874214879516874 Я думаю, что, поскольку регулярное выражение соответствует первым 11 символам, оно возвращает совпадение, и не имеет значения, что за ним стоит.
Как я могу решить эту проблему?
\d{3, 4}
действительно меня запутал. Тем временем кто-то разместил якорь$
. Вы, вероятно, должны проголосовать за них сейчас. - person Droogans   schedule 15.03.2012