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