Такая проблема: как в перловом регекспе (питоновский модуль re) написать выражение, удовлетворяющее строке, состоящей только из букв и пробелов? Не могу найти решения...
в перл-совместимых регексах нет символа, обозначающего буквы "любого алфавита". "Буквы" и пробелы(только пробелы?) латиницы:
(?i)[a-z ]+
Если надо другие алфавиты, соответственно пихаешь в регекс диапазоны
(?i)[a-zА-Яа-я ]+
зато \w прекрасно обозначает "буквы любого алфавита, цифры, символ подчёркивания". с оговоркой, что есть флаг UNICODE, конечно. А Вы серьёзно предлагаете все диапазоны всех алфавитов запихать в регексп?
Блин питон оказывается даже нормальных режекспов не умеет 8(
Вот способ через жопу
>>> re.match(r'^(\w(?!\d+))+$','sadss').group()
'sadss'
>>> re.match(r'^(\w(?!\d+))+$','sad3ss').group()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'
\w цЫфры должен матчить везде, однако во вменяемых реализациях есть способы сделать исключения. >в пыхе libpcre который к перлу отношения не имеет.
Ключевая фраза "Perl Compatible Regular Expressions", то бишь севместимые, про то что тиснули я неверно выразился, скорее тиснули синаксис ("с некоторыми исключениями"), а не стали делать убогую пародию как в питоне.
Однако сделать исключение мабуть и в перле нельзя, зато можно юзать [:alpha:]
Да никакой, просто мне питон ненравится, причем не столько в силу синтаксиса, сколько в силу его чуждой мне философии построение api и привычки постоянно чтото ломать и строить новое. Тут еще эти оригинальные регулярки.