Уведомления

Группа в Telegram: @pythonsu

#1 Май 14, 2009 23:52:33

beliy_shum
От:
Зарегистрирован: 2009-03-11
Сообщения: 67
Репутация: +  0  -
Профиль   Отправить e-mail  

dопрос про применение регулярных выражений. re

что делает эта строка:

txt=re.compile(r'<+>').sub(' ', строковая переменная содержащая кусок кода html)

Регулярное выражение (regular expression) — это шаблон, который определяет мно-
жество строк, ему удовлетворяющих. Функции, определенные в модуле re позволяют
определить, удовлетворяет ли определенная строка данному регулярному выражению
(или, что то же самое, регулярное выражение строке).
Объединение регулярных выражений также является регулярным выражением. Ес-
ли строка a удовлетворяет регулярному выражению A и строка b удовлетворяет регуляр-
ному выражению B, то a + b удовлетворяет A + B. Таким образом, сложные регуляр-
ные выражения могут быть сконструированы из примитивных выражений, описанных
ниже.
Регулярные выражения могут содержать как обычные символы, так и специальные
управляющие последовательности. Большинство обычных символов, таких как ‘A’, ‘a’
или ‘0’, являются простейшими регулярными выражениями, удовлетворяющими самим
себе. Вы можете объединять обычные символы, так выражению ’list’ удовлетворяет
строка ’list’.



compile(pattern )
Компилирует регулярное выражение в строке pattern и возвращает представляю-
щий его объект. Поведением регулярного выражения можно управлять с помощью
аргумента flags. Значение аргумента flags может быть составлено из описан-
ных ниже констант с помощью оператора |.



sub(pattern, repl, string )
Возвращает строку, полученную заменой непересекающихся фрагментов строки
string, удовлетворяющих регулярному выражению pattern, на repl. Если не
найдено ни одного такого фрагмента, строка возвращается неизменной. repl мо-
жет быть строкой или функцией. Функция должна воспринимать один аргумент —
объект, представляющий результат сопоставления, и возвращать строку для заме-
ны. Например:
>>> def dashrepl(matchobj):
…. if matchobj.group(0) == ’-’: return ’ ’
…. else: return ’-’
>>> re.sub(’-{1,2}’, dashrepl, ’pro—-gram-files’)
’pro–gram files’
Если задан и не равен 0 аргумент count, он определяет максимальное число
производимых замен. По умолчанию число замен не ограничено.
Замена удовлетворяющего регулярному выражению фрагмента нулевой длины про-
изводится только в том случае, если он не является смежным с предыдущим таким
фрагментом. Таким образом, ‘sub(’x*’, ’-’, ’abc’)’ возвращает ’-a-b-c-’.
Если repl является строкой, то обрабатываются содержащиеся в ней специальные
последовательности, представляющие символы или ссылки на группы. Например,
r’\n’ заменяется символом новой строки, r’\6’ (или r’\g<6>’)—фрагментом,
удовлетворяющим шестой группе, и r’\g<id>’ — фрагментом, удовлетворяющим
группе с именем id.


я не понимаю, что такое регулярные выражения, это можно просто объяснить?
почтеннеше благодарю



Отредактировано (Май 14, 2009 23:58:04)

Офлайн

#2 Май 15, 2009 01:48:30

beliy_shum
От:
Зарегистрирован: 2009-03-11
Сообщения: 67
Репутация: +  0  -
Профиль   Отправить e-mail  

dопрос про применение регулярных выражений. re

words=re.compile('+').split(txt)

а как ещё и русские слова выделить?
words=re.compile('+').split(txt) так не работает….



Отредактировано (Май 15, 2009 01:49:38)

Офлайн

#3 Май 15, 2009 08:13:34

.Serj.
От:
Зарегистрирован: 2008-09-27
Сообщения: 181
Репутация: +  0  -
Профиль   Отправить e-mail  

dопрос про применение регулярных выражений. re

beliy_shum
words=re.compile('+').split(txt)

а как ещё и русские слова выделить?
words=re.compile('+').split(txt) так не работает….
Так должно сработать:
words=re.compile(u'+').split(txt)



Офлайн

#4 Май 15, 2009 10:20:33

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

dопрос про применение регулярных выражений. re

beliy_shum
я не понимаю, что такое регулярные выражения, это можно просто объяснить?
А Фридла пробовал читать? У него в книге объяснено все и разжевано.



Офлайн

#5 Май 15, 2009 18:55:24

beliy_shum
От:
Зарегистрирован: 2009-03-11
Сообщения: 67
Репутация: +  0  -
Профиль   Отправить e-mail  

dопрос про применение регулярных выражений. re

.Serj.
спасибо большое. сработало
slivlen не пробовал, я до этого момента вообще ни разу с регулярными выражениями не встречался



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version