При условии, что вам нужно регулярное выражение, должно работать следующее:
<\!--TEXT\[([^\]]*)\]-->\s*\n(.*)(?!<\!--END-->)
Если этот текст находится в DOM, было бы намного лучше, однако, проанализировать DOM.
Пояснение:
<\!--TEXT\[ // Match the start.
([^\]]*) // Match (in group 1), everything up until the next ']'
\]-->\s*\n // Match to the end of this line.
(.*) // Match anything (in group 2).
(?!<\!--END-->) // Stop before the end tag is next. (This will mean you get everything up to, but not including the previous line break).