Neuer Kurs! Jeder Programmierer sollte generative KI lernen!
Kostenlose Lektion ausprobieren0
Regex phone number question python course
I'm trying to understand why my code doesn't work. In the problem, it says the phone number should start with 1,8 or 9 and it should have exactly 8 digits. I couldn't understand why my code accepts less than 8 digits or more than 8 digits. https://code.sololearn.com/c2A14380a14a/#py
5 Antworten
+ 1
your pattern doesn't works as you expect:
pattern = r"^1|8|9\d{7}quot;
check if string start with 1 (and anything else after), contains 8 (and implicitly start by using 'match'), or ends (and implicitly start with 'match') with 9 followed by 7 digits...
correct one (by using 'match') could be:
pattern = r"(1|8|9)\d{7}quot;
or:
pattern = r"[189]\d{7}quot;
+ 1
Baran Aldemir , "|" metacharacter means "either or". When your string starts with 1, 8 or 9 it's true that's why it doesn't check after that.
+ 1
Baran Aldemir I have explained in details how your pattern work in my first post/answer here ^^
0
Baran Aldemir , change the pattern => pattern = r"^[189]\d{7}quot;
0
@visph @TheWhiteCat Actually I know those are the answers but I was trying to understand why without parentheses it doesn't work. In other words, what does python interpret from my code?