Я бы хотел заменить все вхождения подстроки регулярными выражениями. Исходные предложения были бы такими:Python: Заменить все вхождения подстрок регулярными выражениями
mystring = "Carl's house is big. He is asking 1M for that(the house)."
Теперь давайте предположим, что у меня есть две подстроки, которые я хотел бы выделить. Я смел слова, добавляя ** в начале и в конце подстроки. В 2 подстроки:
substring1 = "house", so bolded it would be "**house**"
substring2 = "the house", so bolded it would be "**the house**"
В конце я хочу оригинальное предложение, как это:
mystring = "Carl's **house** is big. He is asking 1M for that(**the house**)."
Основная проблема заключается в том, что у меня есть несколько подстрок, чтобы заменить, они могут перекрываться слова, как, например выше. Если я анализирую самую длинную подстроку в первом, я получаю это:
Carl's **house** is big. He is asking 1M for that(**the **house****).
С другой стороны, если я анализирую кратчайшую подстроку первой, я получаю это:
Carl's **house** is big. He is asking 1M for that(the **house**).
Это, кажется, Мне нужно будет заменить с самой длинной подстроки на самую короткую, но мне интересно, как мне ее сделать, чтобы рассмотреть ее при первой замене, но во втором. Также помните, что подстрока может появляться несколько раз в строке.
Примечание: // Предположим, что строка ** никогда не будет происходить в исходной строке, поэтому мы можем использовать его, чтобы полужирный наши слова
['' 're.sub()' ''] (https://docs.python.org/3/library/re.html#re.sub) может принимать функцию для аргумента * repl *. Создайте шаблон, соответствующий вашим подстрокам, затем создайте функцию, которая принимает объект соответствия в качестве аргумента и возвращает эту строку, измененную, как вы хотите. – wwii