Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 26, 2013 20:53:51

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

регулярные кирилица [а-я] , питон 2.7

pulya
я бы хотел флаги оставить, и уменьшить регулярку.
т.е. оптимизировать код, сделать его красивее.

подскажите пожалуйста как это корректно сделать.

Всё просто
re.compile(u"[а-яёa-z0-9]\w+", flags=re.I + re.U)

Только что тебе нужно регуляркой проверять?
Эта регулярное выражение берёт элемент, который начинается с а-я|ё|a-z|0-9 и продолжается буквами|цифрами|_



Отредактировано Budulianin (Окт. 26, 2013 21:18:01)

Офлайн

#2 Окт. 26, 2013 21:26:59

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

регулярные кирилица [а-я] , питон 2.7

небольшие коламбурные замечания (это не ошибки а просто я так не привык писать)

>>> re.I + re.I == re.I | re.I
False
Иногда бывает так, что в управляющей константе уже установлено несколько признаков (бит). В этом случае привычка писать + а не побитовое или может привести к совершенно непредсказуемому поведению.
>>> "\n+"
'\n+'
>>> "\w+"
'\\w+'
я если явно не пишу ur“some pattern” рано или поздно запутываюсь в том что передал в качестве шаблона регулярного выражения.



Отредактировано doza_and (Окт. 26, 2013 21:34:51)

Офлайн

#3 Окт. 26, 2013 21:39:28

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

регулярные кирилица [а-я] , питон 2.7

doza_and
Иногда бывает так, что в управляющей константе уже установлено несколько признаков (бит).

Если мы компилируем шаблон
pattern = re.compile(u"[а-яёa-z0-9]\w+", flags=re.I + re.U)
Приведи пример пожалуйста, когда в константе уже что-то установлено

Если мы сами не переопределяем re.I, то ничего и не будет. Но зачем переопределять re.I ?



Отредактировано Budulianin (Окт. 26, 2013 21:43:16)

Офлайн

#4 Окт. 26, 2013 22:26:23

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

регулярные кирилица [а-я] , питон 2.7

Budulianin
Приведи пример пожалуйста, когда в константе уже что-то установлено
делай, как все делают во всех языках, не надо самодеятельности
по скорости они могут различаться, плюс, это ясность



Офлайн

#5 Окт. 26, 2013 22:28:33

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

регулярные кирилица [а-я] , питон 2.7

py.user.next
делай, как все делают во всех языках,
Привет, а как делают во ВСЕХ языках? :)

Просто мне непонятно
Иногда бывает так, что в управляющей константе уже установлено несколько признаков (бит).



Отредактировано Budulianin (Окт. 26, 2013 22:30:14)

Офлайн

#6 Окт. 26, 2013 22:36:33

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

регулярные кирилица [а-я] , питон 2.7

Budulianin
Привет, а как делают во ВСЕХ языках? :)
складывают побитово

Budulianin
Просто мне непонятно
это просто маленький недочёт



Офлайн

#7 Окт. 26, 2013 22:42:12

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

регулярные кирилица [а-я] , питон 2.7

py.user.next
это просто маленький недочёт
Когда такой недочёт может получиться ?



Офлайн

#8 Окт. 27, 2013 10:05:33

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

регулярные кирилица [а-я] , питон 2.7

py.user.next
по скорости они могут различаться, плюс, это ясность
у меня сложение на 20% быстрее вычисляется
Budulianin
Приведи пример пожалуйста, когда в константе уже что-то установлено
при дублировании
myflag = re.I|re.U
myflag|re.I == myflag
Out[24]: True
преимущество сомнительно конечно, но это скорее лучше рассматривать как некое дополнение к pep-8, пришедшее из языков где такие штуки применяются значительно чаще

Офлайн

#9 Окт. 27, 2013 10:53:54

pulya
Зарегистрирован: 2013-10-26
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

регулярные кирилица [а-я] , питон 2.7

sergeek
спасибо за пример когда в константе уже чтото есть.

в целом тему можно закрывать, я доволен всеми ответами и комментариями.

в споре родилась истина. мне понравилось что мне помогли, мне понравилось находится рядом с такими мозговитыми коллегами.
всем спасибо.

Офлайн

#10 Окт. 27, 2013 12:43:35

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

регулярные кирилица [а-я] , питон 2.7

sergeek
при дублировании
Я думал флаги сразу во flags пишут.
Понятно, спасибо.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version