Найти - Пользователи
Полная версия: r"\w+" как исключить захват цифр?
Начало » Python для новичков » r"\w+" как исключить захват цифр?
1 2
qman
Всем привет
есть код
import re
c_false = "12 qweasdzxcasd 32"
c_true = "Ivan Petrovich Sidorov"
re_exp = r"\w+"
print re.compile(re_exp).findall(c_false)
Помогите составить регулярное выражение re_exp чтобы проверять строку в соответствии с формой записи ‘Фамилия, Имя, Отчество’.
Шаблон re_exp = r“\w+” кроме символов алфавита захватывает цифры, а мне нужны только символы алфавита.
Всем спасибо
P.S. так тоже немного не то re_exp = r"+"
o7412369815963
if re.match(r'^[A-Z][a-z]+\s[A-Z][a-z]+\s[A-Z][a-z]+$',c_true): print 'yes'
тут ещё проверка что-б первая буква слова была большая
qman
o7412369815963
if re.match(r'^[A-Z][a-z]+\s[A-Z][a-z]+\s[A-Z][a-z]+$',c_true): print 'yes'
тут ещё проверка что-б первая буква слова была большая
Спасибо. Подскажите почему следующий код не работает для юникода?
# -*- coding: utf-8 -*-
import re
c_false = "12 qweasdzxcasd 32"
#c_true = "Ivan Petrovich Sidorov"
c_true = u"Иван Петрович Сидоров"

if re.match(r'^[A-Z][a-z]+\s[A-Z][a-z]+\s[A-Z][a-z]+$',c_true, re.UNICODE ):
print 'yes'
else:
print 'no'
А если Ф.И.О. будет написано в кириллице в кодировке UTF-8 или в юникоде, то оно попадет в множество (для прописных соответственно )?
P.S. забыл поставить знак вопроса
o7412369815963
для русского алфавита нужно добавлять А-Я
misha111
уберите контроль регистра re.compile(pattern, re.IGNORECASE), что вы мучаетесь

>>>как исключить захват цифр?
не читаю что там по тексту, но исключить символы можно так это будет (не путать с началом строки ^)
o7412369815963
misha111
уберите контроль регистра re.compile(pattern, re.IGNORECASE), что вы мучаетесь
> тут ещё проверка что-б первая буква слова была большая
qman
извините за тупость , но почему следующий код возвращает отрицание:
# -*- coding: utf-8 -*-
import re
c_true = u"ф"

if re.match(r'^[а-я]$',c_true, re.UNICODE|re.IGNORECASE):
print 'yes'
else:
print 'no'
Если указать переменную c_true = “ф” не как юникод то будет по прежнему отрицание.!
qman
qman
извините за тупость , но почему следующий код возвращает отрицание:
# -*- coding: utf-8 -*-
import re
c_true = u"ф"

if re.match(r'^[а-я]$',c_true, re.UNICODE|re.IGNORECASE):
print 'yes'
else:
print 'no'
Если указать переменную c_true = “ф” не как юникод то будет по прежнему отрицание.!
При работе с латиницей, код работает верно
# -*- coding: utf-8 -*-
import re
c_true = u"s"

if re.match(r'^[a-z]+$',c_true, re.UNICODE|re.IGNORECASE):
print 'yes'
else:
print 'no'
qman
Для кириллицы необходимо указывать в юникод
# -*- coding: utf-8 -*-
import re
c_true = u"йдФ"

if re.match(u'^[а-я]+$',c_true, re.UNICODE|re.IGNORECASE):
print 'yes'
else:
print 'no'
Для Ф.И.О
import re
c_true = u"Иван Петрович Сидоров"
if re.match(u'^[А-Я][а-я]+[\s]+[А-Я][а-я]+[\s]+[А-Я][а-я]+[\s]*$',c_true, re.UNICODE):
print 'yes'
else:
print 'no'
Nik
для русского алфавита нужно добавлять А-Я
… и про букву ё забывать не следует.

qman, шаблон сделайте unicode-строкой и будет вам ‘yes’.

Вместо match() лучше использовать search()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB