Ogólnie wyrażenia zachłanne to kiepski pomysł jeśli parsujesz strony z identyfikatorem class. P też nie powinieneś tak parsować, tylko wziąć wrzucić tam coś co ci zagnieździ (np nazwę tej klasy).
HTML nie jest językiem regularnym, więc używanie wyrażeń regularnych, żeby coś z niego wyciągnąć jest chorym pomysłem. HTML jest za to według klasyfikacji Chomskiego gramatyką bez kontekstową, więc idealnie do tego nada się biblioteka oparta o parser gramatyki bez kontekstowej, w której możesz podawać query stringi.
Znajdziesz coś takiego praktycznie dla każdego języka (najbardziej znane chyba swego czasu było jQuery, ale przeportowane jest to zapewne na każdy normalny język):
Dla PHP: http://j-php.net/wiki/Jsoup-Extension
Dla Java: https://jsoup.org/
Inne języki też zapewne coś takiego mają.
Pisałem wyżej, generator parserów gramatyk bez kontekstowych, jeśli chcesz zobaczyć z czym to się je, to poszukaj dla:
C - flex+bison (ew. lex+yacc)
Java - antlr (ew. jflex+cup)
Scala - ma wbudowany, ale dość ubogi pakiet. Zrobiłem na podstawie tego prosty arythmetic resolver na blogu: http://www.dobreprogramy.pl/Piszemy-troche-mniej-zlozony-kalkulator,Blog,52021.html ale raczej nie należy się nastawiać na dogłębne omówienie tematu w tym wpisie. Po prostu nie mam na to czasu obecnie. Jakiś sensowny opis to na pewno z tydzień zbierania materiałów.