Теория языка связана с теорией вычислений. Что является более философской стороной информатики, когда решается, какие программы возможны или какие когда-либо можно написать, и какие проблемы невозможно написать алгоритм для решения.
Регулярное выражение - это способ описания регулярного языка. Обычный язык - это язык, который может быть определен детерминированным конечным автоматом.
Вы должны прочитать статью о конечных автоматах: http://en.wikipedia.org/wiki/Finite_state_machine
и обычные языки:
http://en.wikipedia.org/wiki/Regular_language
Все обычные языки являются контекстно-свободными языками, но существуют контекстно-свободные языки, которые не являются регулярными. Язык без контекста - это набор всех строк, принимаемых грамматиком без контекста или автоматами Pushdown, который является конечным автоматом с одним стеком: http://en.wikipedia.org/wiki/Pushdown_automaton#PDA_and_Context-free_Languages
Существуют более сложные языки, которые требуют, чтобы машина Тьюринга (любая возможная программа, которую вы можете написать на своем компьютере) решала, есть ли строка в языке или нет.
Теория языка также очень связана с проблемой P против NP и некоторыми другими интересными вещами.
Мое введение в информатику Учебник третьего курса хорошо объяснил этот материал: Введение в теорию вычислений. Майкл Сипсер. Но это стоило мне 160 долларов, чтобы купить его новым, и оно не очень большое. Может быть, вы можете найти использованную копию или найти ее в библиотеке или что-то, что может вам помочь.
EDIT:
Ограничения регулярных выражений и классов с высшим языком изучались за последние 50 лет или около того. Возможно, вас заинтересует лемма прокачки для обычных языков. Это способ доказать, что определенный язык не является регулярным:
http://en.wikipedia.org/wiki/Pumping_lemma_for_regular_languages
Если язык не является регулярным, он может быть Context Free, что означает, что он может быть описан с помощью Context Free Grammer, или это может быть даже в более высоком классе языка, вы можете доказать, что он не Context Free, используя лемму прокачки для контекстно-свободных языков, аналогичных тем для регулярных выражений.
Язык даже может быть неразрешимым, что означает, что даже машина Тьюринга (может запрограммировать ваш компьютер) не может быть запрограммирована для принятия решения о том, должна ли строка приниматься как на языке или отклоняться.
Я думаю, что вас больше всего интересуют конечные автоматы (как детерминированные, так и детерминированные), чтобы увидеть, какие языки может решить Регулярное выражение, и наглядная лемма для доказательства того, какие языки не являются регулярными.
В основном язык не является обычным, если ему нужна какая-то память или способность считать. Язык совпадающих скобок не является регулярным, например, потому что машина должна помнить, открыла ли она круглые скобки, чтобы знать, должна ли она их закрывать.
Язык всех строк, использующих буквы a и b, которые содержат как минимум три буквы b, является обычным языком: a ba ba ba
Язык всех строк, использующих буквы a и b, которые содержат больше b, чем a, не является регулярным.
Также вам не следует, чтобы все конечные языки были регулярными, например:
Язык всех строк длиной менее 50 символов, использующих буквы a и b, которые содержат больше букв b, чем a, является регулярным, поскольку он, конечно, мы знаем, что его можно описать как (b | abb | bab | bba | aabbb | ababb | ...) и т. д., пока не будут перечислены все возможные комбинации.