Символ-шаблонПоддерживаетсяСоответствующая строка
\во всехНачало escape-последовательности. Определяет, следует ли интерпретировать последующий знак как шаблон. Последующие буквы или цифры интерпретируются различными способами в зависимости от программы
.во всехЛюбой символ
^во всехНачало строки
$во всехКонец строки
[...]во всехЛюбой из символов, указанных в скобках
[^...]во всехЛюбые символы, кроме указанных в скобках
*во всехЛюбое количество экземпляров предыдущего элемента
?egrep/Emacs, Perl/PythonНи одного или один экземпляр предыдущего элемента
+egrep/Emacs, Perl/PythonОдин или несколько экземпляров предыдущего элемента
{n}egrep, Perl/Python; как \{n\} в EmacsВ точности n повторений предыдущего элемента. Не поддерживается некоторыми старыми regexp-средствами
{n,}egrep, Perl/Python; как \{n,\} в Emacsn или более повторений предыдущего элемента. Не поддерживается некоторыми старыми regexp-средствами
{m,n}egrep, Perl/Python; как \{m,n\} в EmacsМинимум m и максимум n повторений предыдущего элемента. Не поддерживается некоторыми старыми regexp-средствами
|egrep, Perl/Python; как \| в EmacsЭлемент слева или справа. Обычно используется с некоторой формой группирующих разделителей
(...)Perl/Python; как \(...\) в более старых версияхИнтерпретировать данный шаблон как группу (в более новых regexp-функциях, например в языках Perl и Python). Более старые средства, такие как regexp-функции в Emacs и в утилите grep требуют записи \(...\)

В новых языках с поддержкой регулярных выражений установилась практика Perl/Python-варианта. Он является более прозрачным, чем остальные, особенно потому, что обратная косая черта перед не алфавитно-цифровым символом всегда означает, что данный символ трактуется буквально, что значительно устраняет путаницу при ссылке на элементы регулярных выражений.

Регулярные выражения являются исключительным примером того, насколько лаконичным может быть мини-язык. Простые регулярные выражения отражают режим распознавания, который иначе пришлось бы реализовывать с помощью сотен строк туманного, чреватого ошибками кода.

<p>8.2.3. Учебный пример: Glade</p>

Glade представляет собой средство разработки интерфейсов для библиотеки Х-инструментария[80] GTK с открытым исходным кодом. Glade позволяет разрабатывать GUI-интерфейс путем интерактивного выбора, размещения и модификации элементов управления на панели интерфейса. GUI-редактор создает XML-файл, описывающий проектируемый интерфейс. Полученный файл, в свою очередь, можно передать одному из нескольких генераторов кода, которые непосредственно создают С, С++, Python- или Perl-код для интерфейса. Сгенерированный код затем вызывает создаваемые разработчиком функции, определяющие поведение интерфейса.

XML-формат Glade для описания GUI-интерфейсов является хорошим примером простого узкоспециального мини-языка. В примере 8.1 показан Glade-формат для GUI-интерфейса "Hello, world!".

Перейти на страницу:

Все книги серии Программирование для профессионалов

Похожие книги