Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 10, 2018 17:02:26

polin11
Зарегистрирован: 2013-05-02
Сообщения: 58
Репутация: +  0  -
Профиль   Отправить e-mail  

Любимые регулярные выражения

Поясните почему результат

 import re
str1 = '1qazxsw23edcvfr45tgbnhy67ujmki89olp01234567890'
str3 = re.sub('\w{4}', '=', str1)
print(str3) #===========90
\w - любая буква и цифра {4} должна повторяться не менее 4 раз, то есть строка str3 должна полностью состоять из =

Офлайн

#2 Апрель 10, 2018 17:10:25

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Любимые регулярные выражения

\w и есть любая буква и цифра

 >>> s = '1qazxsw23edcvfr45tgbnhy67ujmki89olp01234567890'
>>> re.sub('[a-zA-Z4]','=',s)
'1======23=======5======67=====89===0123=567890'
>>> 
если в смысле делить по 4 символа то последняя подстрока не 4 символа, поэтому не заменяется
 >>> s
'1qazxsw23edcvfr45tgbnhy67ujmki89olp01234567890'
>>> re.sub('\w{4}','=',s)
'===========90'
>>> re.sub('\w{1,4}','=',s)
'============'
>>> 

Отредактировано vic57 (Апрель 10, 2018 17:18:30)

Офлайн

#3 Апрель 11, 2018 10:39:19

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Любимые регулярные выражения

polin11
{4} должна повторяться не менее 4 раз
нет {4} означает 4 раза ровно, не менее 4-х будет {4, }
учите матчасть и будет вам щастье:
http://www.ilnurgi1.ru/docs/python/modules/re.html

polin11
то есть строка str3 должна полностью состоять из =
нет не должно, вы ищете 4подряд(не более и не менее) любые буквы-цыфры и заменяете одним знаком равно. у вас длинна str1 равна 46 символам вот вы и получаете 11 знаков равно и два последних символа “90” котороые не подпадают под щаблон



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version