Использовать регулярные выражения для выборки текста из HTML может быть затруднительно из-за сложности и многообразия структур HTML. Тем не менее, если вы уверены в структуре вашего HTML, можно использовать регулярные выражения для поиска отдельных слов вне определённых тегов.
Для вашего примера, чтобы выбрать слово "bear", которое не находится в тегах `<a>` или `<img>`, можно использовать следующий подход:
```python
import re
html_content = '''
<div class="main">
<div class="text">
People give small gifts or <a href="">bear big max</a> they exchange cards and love letters that express their feelings.
The small present can be a bunch of flowers, chocolate, a teddy bear or jewelry and a dinner in
a restaurant. It really depends on the people, their tastes,
imagination and financial <img src="/image/bear.jpg" alt="teddy bear or jewelry"/> opportunities.
</div>
</div>
'''
# Регулярное выражение для поиска слова "bear" вне тегов <a> и <img>
pattern = r'(?<!<a[^>]*>[^<]*|<img[^>]*>[^<]*)\bbear\b(?![^<]*</a>|[^<]*</img>)'
matches = re.findall(pattern, html_content, re.IGNORECASE)
print(matches)
```
### Объяснение регулярного выражения:
- `(?<!<a[^>]*>[^<]*|<img[^>]*>[^<]*)` — негативный просмотр назад (negative lookbehind): проверяет, что перед словом "bear" нет открывающего тега `<a>` или `<img>`, за которым не следует открывающий тег.
- `\bbear\b` — ищет слово "bear" с границами слова.
- `(?![^<]*</a>|[^<]*</img>)` — негативный просмотр вперёд (negative lookahead): проверяет, что за словом "bear" нет закрывающего тега `</a>` или `</img>`.
### Важно:
Использование регулярных выражений для анализа HTML-страниц не всегда надёжно в силу потенциальной сложности HTML. Рекомендуется использовать специализированные библиотеки для разбора HTML, такие как BeautifulSoup в Python, если это возможно. В случае HTML с неправильной структурой регулярные выражения могут привести к неверным результатам.