<select[^>]*>[^<]*(?:<(?!/select>)[^<]*)*</select>
... or in readable form:
<select[^>]*> # start tag
[^<]* # anything except opening bracket
(?: # if you find an open bracket
<(?!/select>) # match it if it not part of end tag
[^<]* # consume any more non-brackets
)* # repeat as needed
</select> # end tag
This is an example of the "extended loop" method that Friedl develops in his book, Mastering Regular Expressions . I did a quick test in RegexBuddy using a template based on reluctant quantifiers:
(?s)<select[^>]*>.*?</select>
... 6000 . 500 . (</select), , 800 .
, :
<select[^>]*+>[^<]*+(?:<(?!/select>)[^<]*+)*+</select>
, . , ; 500 , , .