Я вижу множество ответов, пытающихся решить проблему, но, думаю, у меня есть для вас ответ.
Я полагаю, что весь синтаксис регулярных выражений пришел с конца 70-х годов. (Жаль, что я не могу найти какую-то историю по этому вопросу) Я взял книгу 1979 года об автоматах букв, и вся книга заполнена математическими доказательствами нахождения шаблонов в тексте. Когда я вернусь домой, я получу название и обновлю его здесь.
Дело в том, что в этой книге были некоторые очень сложные символы по отношению к исчислению, что если бы я не пошел в такой класс, я бы не смог его понять. Бьюсь об заклад, однако, математик, который регулярно использует этот синтаксис, сможет прочитать его как роман.
Мне потребовался хороший месяц, чтобы разобраться, как читать регулярные выражения, и мне просто нужно взглянуть на него. Для непрофессионала это выглядит сложным, со всеми этими странными символами. Я не считаю регулярные выражения сборкой, это математическая формула для поиска шаблонов в тексте. Учитывая синтаксис и исходящий от математики, я не думаю, что он далек.
Так что, что касается компилятора, я сомневаюсь, что такой может быть. Как отметил dmckee, «я отмечаю, однако, что многим старым рукам они не нравятся». У вас есть карикатуры и комедии, изображающие сложные математические уравнения на досках. Это шутка, чтобы показать, насколько сложен тот или иной предмет, но на самом деле любой, кто имеет опыт, может понять его, если ему дадут подтекст и немного обучения. Регекс не сложно. Как только вы изучите основы, все сводится к тому конкретному парсеру, который вы используете. Как некоторые дети говорят мне, что они не хотят изучать C / C ++, потому что это сложнее, чем Javascript, даже если он имеет такой же синтаксис. Его восприятие, а не сложность.
Как только вы выучите регулярные выражения, это двигатели, которые вызывают у вас проблемы. Visual Studio использует скобки вместо скобок для группировки. Простая библиотека регулярных выражений SLRE , которую я использую, имеет простое подмножество против PCRE с более полным синтаксисом. На этом этапе мы начинаем говорить о более новом языке, а не об инструменте для сопоставления текста.
Кроме того, большинство программистов используют одну короткую строку для своих совпадений с регулярным выражением, а не создают полное совпадение с регулярным выражением, потому что они просто хотят проанализировать некоторые случайные данные. Сопоставление с регулярным выражением - это такой инструмент, как Bison, yacc или ANTLR. Парсер, созданный вручную, всегда будет лучше, так что, по сути, вы можете скомпилировать свое собственное регулярное выражение, так зачем тратить время на 2 страницы кода для соответствия регулярному выражению, когда простой цикл while и быстрее?
Если вы хотите, чтобы регулярные выражения были более динамичными и читабельными, лучше создать свой синтаксический анализатор на родном языке, который вы используете для своей программы. Regex должен быть инструментом, а не полноценным языком.
В качестве примечания рассмотрим исходный код Lua между Lua 3.0 и 3.2.2. Они превращаются из парсера бизонов в ручной. Вы понимаете, насколько больше у них свободы, чем при использовании инструмента для анализа текста, особенно в последних выпусках функций. Конечно, это также усложняет код для обновления. Это был выбор между чистотой файлов * .y и надежностью сборки вручную.