(Нет, Регулярное выражение Python, как удалить все совпадения из строки не решает мою проблему)
Предположим, у меня есть этот список:
names = ['your name', 'the name', 'his name', 'her name', 'their name', 'employer name', "employer's name", "father's name",
"mother's name", "maiden name", "son's name", "daughter's name", "brother's name", "sister's name"]
И предположим, у меня есть этот фрагмент текста:
text = "What is your name? Well, uh it's John Smith. Thanks for asking. Anyway, I'd doing well."
Как использовать регулярные выражения, чтобы найти каждый элемент имен списка в тексте, и немедленно заменить блок текста (скажем, длиной 50)после элемента с «[имя]». Таким образом, мой вывод будет:
text = "What is your name [name] Anyway, I'd doing well."
Пока у меня есть этот код ниже, но он заменяет только элемент с «[name]», а не фактический текст после элемента.
def my_replace3(match):
match = match.group()
return " [name] "
def no_name(text):
names = ['your name', 'the name', 'his name', 'her name', 'their name', 'employer name', "employer's name", "father's name",
"mother's name", "maiden name", "son's name", "daughter's name", "brother's name", "sister's name"]
regex = re.compile(r'\b(' + '|'.join(names) + r')\b', re.IGNORECASE)
text = re.sub(regex, my_replace3, text)
return text
Я не большой эксперт по регулярным выражениям, поэтому ваша помощь будет принята с благодарностью.