Регулярное выражение Python не работает, но правильный синтаксис - PullRequest
0 голосов
/ 28 октября 2019

скриншот регулярного выражения в ATOM

У меня есть регулярное выражение Python для проверки типичного адреса в Великобритании, но, как отмечено в ATOM IDE, регулярное выражение выглядит неправильно. Я считаю, что это регулярное выражение работало раньше и, судя по другим успешным регулярным выражениям, я не уверен, что не так с этим регулярным выражением, возможно, это скорее всего синтаксис или IDE?

        regex = '[A-Z]{1,2}[0-9R][0-9A-Z]? [0-9][A-Z]{2}'
        match = re.match(regex, postalCode_text.get())
        if match == None:
            tk.messagebox.showinfo("Error", "Postcode probably mispelt")
        else:
            addressValidator(postalCode_text.get())

        regex = '\b\d{1,3}(?:\s[a-zA-Z\u00C0-\u017F]+)+'
        fullAddress = addressLine_text.get()+" "+city_option.get()
        match = re.match(regex, fullAddress)
        print("This is the full address", fullAddress)
        if match == None:
            tk.messagebox.showinfo("Error", "Address probably mispelt")
            #raise ValueError('Bad Syntax')
        else:
            print(addressValidator(fullAddress))

        regex = '(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)'
        match = re.match(regex, email_text.get())
        if match == None:
            tk.messagebox.showinfo("Error", "Email probably mispelt")
            #raise ValueError('Bad Syntax')
        else:
            emailValidator(email_text.get())

1 Ответ

0 голосов
/ 28 октября 2019

Я думаю, что проблема может быть в вашем postalCode_text.get() методе. Я запустил небольшую утилиту для проверки регулярных выражений, что я считаю правильным.

import re

# test = 'CF24 3DG'
test = 'aksdfjahsdjfhlasdjf'
regex = '[A-Z]{1,2}[0-9R][0-9A-Z]? [0-9][A-Z]{2}'

match = re.match(regex, test)
print('Match value: ' + str(match))
if match == None:
    print('No Match')
else: 
    print('Match!')

Я бы также заменил пробел в вашем регулярном выражении на \s, чтобы вы могли быть последовательными.

...