Краткий ответ использует следующее регулярное выражение:
(?s)<car .*? model=BMW .*?>.*?</car>
- (? S) - это соответствует многострочному
- . *? - соответствует любому персонажу несколько раз ленивым образом (минимально
матч)
(немного) более сложный ответ:
(?s)<([a-z\-_0-9]+?) .*? model=BMW .*?>.*?</\1>
Это позволит сопоставить car1 и car2 в следующем тексте
<car1 ... model=BMW ...>
...
...
...
</car1>
<car2 ... model=BMW ...>
...
...
...
</car2>
- (..) представляет группу захвата
- \ 1 в этом контексте соответствует тому же тексту, что и последний найденный
группа захвата номер 1