Найти - Пользователи
Полная версия: Регулярное выражение включающее перенос строк
Начало » Python для новичков » Регулярное выражение включающее перенос строк
1
unmanner
Всём привет!

Делаю так:

text2 = ‘<drafted-by>NEW</drafted-by>’
regexp = re.compile(r“<drafted\-by>.*</drafted\-by>”, re.S)
text = regexp.sub(text2,text)


но такое РВ не работает из-за того что, в исходном тексте между тегами <drafted-by> есть перенос строк и я неправильно пытаюсь включить перенос строк в регулярном выражении.

Поправьте меня пожалуйста, много чего уже перепробовал :)
PooH
re.DOTALL

PS: И наверное группу стоит образовать, вы же потом с найденным работать захотите
<drafted\-by>(.*)</drafted\-by>
strannik747
Наверное, параметры string и replacement в функции sub() перепутали.
Код ниже работает, как и ожидается:

import re

text = """This is a
<drafted-by>
VERY
OLD
</drafted-by>
text.
"""
regexp = re.compile(r"<drafted\-by>.*</drafted\-by>", re.S)
text = regexp.sub('NEW', text)
print text
unmanner
PooH
e.DOTALL

PS: И наверное группу стоит образовать, вы же потом с найденным работать захотите
<drafted\-by>(.*)</drafted\-by>
Сделал, результат прежний..

strannik747
Наверное, параметры string и replacement в функции sub() перепутали.
Нет не перепутал, я проверил, заменил на любой другой тэг который входит без переноса строк в исходный текст - результат заменилось нормально.

Чертовщина какая-то..
unmanner
Может переносы строк какие-нибудь нетипичные?
Можно как-нибудь вообще точку за абсолютно все символы считать?
PooH
unmanner
Может переносы строк какие-нибудь нетипичные?
Можно как-нибудь вообще точку за абсолютно все символы считать?
re.DOTALL это и делает. Дайте уже ваш код на посмотреть
bw
PooH:
>>> import re
>>> re.S == re.DOTALL
True
unmanner:
>>> import re

>>> text = """This is a
<drafted-by>
VERY
OLD
</drafted-by>
text.
<drafted-by>111</drafted-by>
"""
>>> mask = re.compile(r'(<drafted-by>)[^<]+(</drafted-by>)', re.S)
>>> mask.sub(r'\1NEW\2', text)
'This is a\n<drafted-by>NEW</drafted-by>\ntext.\n<drafted-by>NEW</drafted-by>\n'
..bw
unmanner
Проблема оказалось в том что просто перепутал местами / и - в РВ.. So sorry… :(
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