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
*
Документ**
**