> но когда нет _Data[2] или [2] то не находит ничего И правильно делает, разберём это выражение:
~ сначала должна идти тильда
([a-zA-z]+) затем одна или больше букв
_ затем подчёркивание
([a-zA-z]+) затем снова одна или больше букв
\[ затем открывающая квадратная скобка
(\d+) затем одна или больше цифр
\] затем закрывающая квадратная скобка
Заметьте, что все эти части у вас обязательны. Если нет хотя бы одной, ничего не будет найдено.
Кстати, вашему выражению соответствует, например, такая строка: "!@#$abc_de[^&*q_q[00]]]]:-)"