Найти - Пользователи
Полная версия: регулярные кирилица [а-я] , питон 2.7
Начало » Python для новичков » регулярные кирилица [а-я] , питон 2.7
1 2 3 4
Budulianin
pulya
я бы хотел флаги оставить, и уменьшить регулярку.
т.е. оптимизировать код, сделать его красивее.

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

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

Только что тебе нужно регуляркой проверять?
Эта регулярное выражение берёт элемент, который начинается с а-я|ё|a-z|0-9 и продолжается буквами|цифрами|_
doza_and
небольшие коламбурные замечания (это не ошибки а просто я так не привык писать)
>>> re.I + re.I == re.I | re.I
False
Иногда бывает так, что в управляющей константе уже установлено несколько признаков (бит). В этом случае привычка писать + а не побитовое или может привести к совершенно непредсказуемому поведению.
>>> "\n+"
'\n+'
>>> "\w+"
'\\w+'
я если явно не пишу ur“some pattern” рано или поздно запутываюсь в том что передал в качестве шаблона регулярного выражения.
Budulianin
doza_and
Иногда бывает так, что в управляющей константе уже установлено несколько признаков (бит).

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

Если мы сами не переопределяем re.I, то ничего и не будет. Но зачем переопределять re.I ?
py.user.next
Budulianin
Приведи пример пожалуйста, когда в константе уже что-то установлено
делай, как все делают во всех языках, не надо самодеятельности
по скорости они могут различаться, плюс, это ясность
Budulianin
py.user.next
делай, как все делают во всех языках,
Привет, а как делают во ВСЕХ языках? :)

Просто мне непонятно
Иногда бывает так, что в управляющей константе уже установлено несколько признаков (бит).
py.user.next
Budulianin
Привет, а как делают во ВСЕХ языках? :)
складывают побитово

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

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

в споре родилась истина. мне понравилось что мне помогли, мне понравилось находится рядом с такими мозговитыми коллегами.
всем спасибо.
Budulianin
sergeek
при дублировании
Я думал флаги сразу во flags пишут.
Понятно, спасибо.
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