2015-10-07 2 views
1

Для школьного проекта мне нужно написать скрипт Python, который проверяет голландский почтовый индекс и делает это с помощью регулярных выражений.python regex, проверьте последние два символа переменной

Я придумал следующий сценарий, два из моих регулярных выражений не работают, я некоторое время застрял в этом и не знаю, что я делаю неправильно.

Ниже приведен сценарий:

check1=0 
check2=0 
check3=0 
invoer = input ("Fill in a postal code") 
if re.match("^[0-9]{0,4}", invoer): 
    check1 = 1 
#Below if statement doesn't work (Should checks that the last 2 charcters are capitals) 
if re.match("[A-Z]{2}$", invoer): 
    check2 = 1 
    print ("check 2 works") 
#Below if statement doesn't work (Should checks for existence of a space on position 5.) 
if re.match("\\s{5}", invoer): 
    check3 = 1 
    print ("check 3 works") 
if re.match("^[A-Z0-9]{0,6}", invoer): 
    check3 = 1 
    print ("ding1") 
if check1 == 1 and check2 == 1 and check3 == 1: 
    print ("Postcode is valide") 

ответ

3

re.match() смотрит на матч с начала строки:

Если ноль или более символов в начале строки соответствовать регулярным шаблон выражения, верните соответствующий экземпляр MatchObject . Возврат Нет, если строка не соответствует шаблону; примечание , что это отличается от совпадения нулевой длины.

Вы должны использовать re.search() вместо:

if re.search("[A-Z]{2}$", invoer): 
    # ... 
+0

Спасибо, что решает половину моей проблемы, теперь мне просто нужно выяснить, как проверить, что персонаж на позиции 5 является пространством. – gijs007

+1

@ gijs007 как насчет чего-то простого, как 'invoer [4] ==" "'? Ну, мы можем поговорить о том, что одно регулярное выражение заменяет все проверки, но это, вероятно, вне сферы действия здесь. Благодарю. – alecxe

+0

Большое спасибо, что решает мои проблемы :) – gijs007

0

"\ s {5}" соответствует 5 пробелов. Вы хотите совместить 4 символа, а затем одно пространство? Также я использую «сырые» строки, так что мне не нужно скрываться. Это r ". {4} \ s".

Смежные вопросы