Regex для поиска чего-либо внутри тега

Есть некоторая строка по типу

<a class="link" href="./img/photo.jpg" download="">Фото</a>

искомая строка заключена в тег

Использую:

pattern = r'(<a.+/a>)'

столкнулся с конструкцией:

<a> </a>
<p> </p>
<a> </a>

на выходе получаю строку с ДВУМЯ открывающими и закрывающими тегами и текстом между ними:

**<a** class="link" href="./img/photo.jpg" download="">Фото**</a>*<p class="link">id стикера - CAACAgIAAxkBAAIDxWITCaZnaUelQ0SNlHMTrjd2klAmAAIBAQACVp29CiK-nw64wuY0IwQ</p>*<a** class="link" href="./img/tochno.txt" download="">Документ**</a>**

Вопрос: как сделать поиск по шаблону НЕ жадным?


Ответы (1 шт):

Автор решения: Namerek
import re
a = """**<a** class="link" href="./img/photo.jpg" download="">Фото**</a>*<p class="link">id стикера - CAACAgIAAxkBAAIDxWITCaZnaUelQ0SNlHMTrjd2klAmAAIBAQACVp29CiK-nw64wuY0IwQ</p>*<a** class="link" href="./img/tochno.txt" download="">Документ**</a>**"""

s = re.findall(r'(?<=>)[^<>]+(?=</)', a)
print(s)
# ['Фото**', 'id стикера - CAACAgIAAxkBAAIDxWITCaZnaUelQ0SNlHMTrjd2klAmAAIBAQACVp29CiK-nw64wuY0IwQ', 'Документ**']

Без регулярок

from bs4 import BeautifulSoup as Soup
a = """**<a** class="link" href="./img/photo.jpg" download="">Фото**</a>*<p class="link">id стикера - CAACAgIAAxkBAAIDxWITCaZnaUelQ0SNlHMTrjd2klAmAAIBAQACVp29CiK-nw64wuY0IwQ</p>*<a** class="link" href="./img/tochno.txt" download="">Документ**</a>**"""

soup = Soup(a, 'html.parser')
print(*soup.stripped_strings, sep='\n')

output

**
Фото**
*
id стикера - CAACAgIAAxkBAAIDxWITCaZnaUelQ0SNlHMTrjd2klAmAAIBAQACVp29CiK-nw64wuY0IwQ
*
Документ**
**
→ Ссылка