В Java вам нужно экранировать escape-символы (это является следствием того, что шаблон определяется как строка). Таким образом, вы будете использовать код
Pattern firstinstance = Pattern.compile("\\[[0-9]");
Pattern secondinstance = Pattern.compile("\\[[a-zA-Z]");
Эти строки читаются как
\[[0-9]
и
\[[a-zA-Z]
которое вы хотите регулярное выражение.
Обратите внимание, что для получения буквального обратного слеша в регулярном выражении вам нужно использовать 4 обратных слеша \\\\
.