Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 1, 2013 18:08:47

lobster
От:
Зарегистрирован: 2011-06-09
Сообщения: 82
Репутация: +  0  -
Профиль   Отправить e-mail  

regexp правильное использование

Приветствую всех участников форума!
Нужно найти все в начале строк “ПРИМЕР” и заменить на ПРИМЕР, т.е. выдернуть все кавычки в слове если оно встретится в начале строки. Делаю так(кусок кода):

content = re.sub(u'^"([А-Я]+)"', "\\1", content.decode("cp1251"), re.UNICODE | re.MULTILINE)
Это не работает, но если применить:
content = re.findall(u'^"([А-Я]+)"', content.decode("cp1251"), re.UNICODE | re.MULTILINE)
Все нормально, находит то что мне нужно, но замена не работает!



Офлайн

#2 Апрель 1, 2013 19:08:28

lobster
От:
Зарегистрирован: 2011-06-09
Сообщения: 82
Репутация: +  0  -
Профиль   Отправить e-mail  

regexp правильное использование

Вот нашел решение, но если честно не понял:

import re
st = '"foo"\n"foo"'
print st
print re.sub('(?m)^"(foo)"', r'\1', st, count=0)
Хотелось бы узнать что это за хитровые**нный символ (?m) перед знаком начала строки



Отредактировано lobster (Апрель 1, 2013 19:28:43)

Офлайн

#3 Апрель 1, 2013 22:28:06

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

regexp правильное использование

>>> import re
>>> 
>>> s = """
... абвгд1 еёжзи1
... "абвгд2" еёжзи2
... абвгд3 еёжзи3
... "абвгд4" еёжзи4
... абвгд5 еёжзи5
... "абвгд6" еёжзи6
... """
>>> 
>>> output = re.sub(r'^"([^"]+)"', r'\1', s, flags=re.M)
>>> print(output)
абвгд1 еёжзи1
абвгд2 еёжзи2
абвгд3 еёжзи3
абвгд4 еёжзи4
абвгд5 еёжзи5
абвгд6 еёжзи6
>>>

(?m) означает встроенный флаг
их используют нечасто, ввиду того что их нельзя отменить в скомпилированных регулярных выражениях



Отредактировано py.user.next (Апрель 1, 2013 22:31:27)

Офлайн

#4 Апрель 2, 2013 03:20:09

lobster
От:
Зарегистрирован: 2011-06-09
Сообщения: 82
Репутация: +  0  -
Профиль   Отправить e-mail  

regexp правильное использование

Спасибо py.user.next, как всегда выручил!



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version