Вы говорите, что другие ответы не работают, но они мне кажутся:
>>> import re
>>> html_string = '{{realword}} {fake1}} {{fake2} {fake3} fake4'
>>> re.findall(r'\{\{(\w.+?)\}\}', html_string)
['realword']
Если это не сработает для вас, вам нужно будет предоставить более подробную информацию.
Редактировать : Как насчет следующего?Избавление от точки (.
) и использование только \w
также позволяет использовать жадные квалификаторы и работает для примера HTML из вашего комментария:
>>> html_string = 'html>\n <head>\n </head>\n <title>\n </title>\n <body>\n <h1>\n T - Shirts\n </h1>\n <img src="March-Tshirts/skull_headphones_tshirt.jpg" />\n <img src="/March-Tshirts/star-wars-t-shirts-6.jpeg" />\n <h2>\n we - we - we\n </h2>\n {{unsubscribe}} -- {{tracking_beacon} -- {web_url}} -- {name} \n </body>\n</html>\n'
>>> re.findall(r'\{\{(\w+)\}\}', html_string)
['unsubscribe']
\w
соответствует буквенно-цифровым символам иподчеркивание;если вам нужно сопоставить больше символов, вы можете добавить его в набор (например, [\w\+]
, чтобы также соответствовать знаку плюса).