регулярное выражение со специальными символами - PullRequest
1 голос
/ 16 мая 2010

Мне нужно регулярное выражение для проверки строки с одним или несколькими из следующих символов:

  • a-z
  • A-Z
  • '
  • àòèéùì
  • простой пробел

НАПРИМЕР, эти строки действительны:

D' argon calabrò

maryòn l' Ancol

эти строки НЕ действительны:

hello38239

my_house 

work [tab] with me

Я попробовал это:

re.match (r "^ [a-zA-Z 'òàèéìù] + $", строка)

Кажется, это работает в моей оболочке python, но в Django я получаю эту ошибку:

SyntaxError at /home/

("Non-ASCII character '\\xc3' ...

Почему?


Edit:

Я добавил # - - кодирование: utf-8 - - вверху моего forms.py, но строки с à, è, ò,,, é или ì не совпадают никогда .

Это мой чистый метод forms.py:

    def clean_title(self):

        if(re.match(r"^[a-zA-Z 'òàèéìù]+$", self.cleaned_data['title'].strip())):
            return self.cleaned_data['title'].strip()               
        raise forms.ValidationError(_("This title is not valid."))

Ответы [ 2 ]

2 голосов
/ 16 мая 2010

Если вы используете символы не ASCII в ваших исходных файлах Python, вы должны добавить правильную кодировку в начало вашего исходного файла, например так:

# -*- coding: utf-8 -*-
utf_string='čćžđšp'

Определение кодировок исходного кода Python

Мне кажется, это нормально работает:

>>> import re
>>> mystring = "D' argon calabrò"
>>> matched = re.match(r"^([a-zA-Z 'òàèéìù]+)$", mystring)
>>> print matched.groups()
("D' argon calabr\xc3\xb2",)
1 голос
/ 16 мая 2010

Ну, это почти все символы не ascii. Так что я решил, что он использует только ascii для кодирования символов. Может быть, вам нужно настроить его на использование UTF-8?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...