Edit
Wait, I think I understand what you mean: you only want to preserve the line breaks after your "data" lines. If so, try:
(?m)^([ ]*|;.*)(
?
|$)
A small explanation:
(?m) # enable multi-line option
^ # match the beginning of a line
( # start capture group 1
[ ]* # match any character from the set {' ', ''} and repeat it zero or more times
| # OR
; # match the character ';'
.* # match any character except line breaks and repeat it zero or more times
) # end capture group 1
( # start capture group 2
? # match the character '
' and match it once or none at all
# match the character '
'
| # OR
$ # match the end of a line
) # end capture group 2
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…