Separar String em comandos SQL

Buenas pessoal!

Alguem aí sabe como funciona bem as classes java.util.regex.Pattern e java.util.regex.Matcher?
Estou consultando a documentação, mas como meu “ingreis” não é lá dos melhores tá um pouquinho difícil de entender perfeitamente o funcionamento dessas duas classes.

A minha situação é a seguinte:
Tenho um JTextArea que pode ser digitados comandos SQL, esses comandos são separados por ponto e virgula, assim como nas demais ferramentas SQL.

Minha dificuldade está em separar os comandos pelo ponto e virgula, pois não posso simplesmente pegar o indexOf dele porque ele pode estar concatenado dentro de uma String, o que significa que aquele não pode ser considerado o fim da String.

Verificar se ele está entre aspas também não funcionaria pois o usuário pode botar uma barra invertida indicando que aquela aspas pertence a String e não é o fim do comando que ele tá digitando.

Exemplo prático com 4 selects:


#Linhas com este símbolo deverão ser consideradas comentário.
select * from pessoaj where nome like "bruno's; house";
select * from pessoaj
	where
		nome like 'bruno\'s; house'
	and
		numero = 150
		;
select * from pessoaj;
select * from pessoaf;

Sei que é possível fazer bastante coisa com o Matcher e Pattern, mas será que é algo neste nível de complexidade é possível de ser feito?
Se não for possível alguém teria alguma outra idéia de como me ajudar?

Pensei em criar uma função que pega o caretPosition do textarea, se for maior que 0, eu vou fazer um for decrescendo para percorrer todos os caracteres até encontrar um ponto e virgula e à partir dele eu vou percorrer caracter por caracter até chegar a outro ponto e vírgula que não esteja concatenado, assim eu acredito que eu conseguiria separar os comandos.

Abraço!