Поиск выделенного текста в Python с использованием re.sub - PullRequest
0 голосов
/ 30 апреля 2020

Суть этого в том, что я делаю функцию, которая удаляет выделенный курсивом текст с помощью re.sub и дублирует текст. У функции есть аргумент с именем предложением, который содержит строку.

Несколько примеров:

sentence = <i>All of this text is italicized.</i>
Return value = "All of this text is italicized. All of this text is italicized."

sentence = <i>beep</i><i>bop</i><i>boop</i><i>bonk</i>
Return value: "beep beepbop bopboop boopbonk bonk"

sentence = "I <i>Like</i>, food because <i>it's so great</i>!"
return value: "I Like Like food because it's so great it's so great!".

Вот что у меня есть:

pattern = r'<.*?>'
return re.sub(pattern, i, sentence)

Любой может помочь

1 Ответ

0 голосов
/ 30 апреля 2020

Во-первых, ваш шаблон неверен - он соответствует всему от первого < до последнего >, что явно не то, что вы хотите. Во-вторых, for i in sentence не имеет смысла - итерация по строке дает вам одиночные символы строки, которые в любом случае не будут соответствовать вашему шаблону.

Это, однако, похоже на то, что вы хотите:

return re.sub('<i>(.*?)</i>', r'\1 \1', sentence)

\1 является ссылкой на любую первую группу захвата, ie. (.*?), соответствует, и используется дважды для достижения эффекта удвоения.

...