Регулярные выражения

Иногда для работы с текстом удобно использовать шаблоны, или регулярные выражения. С помощью шаблонов можно, например, научиться извлекать из текста год рождения персонажа. Для передачи этой информации в тексте обычно используется шаблон «X родился в YEAR», где X – имя персонажа биографии. Мы уже умеем извлекать имена собственные, слово «родился» можно задать леммой с соответствующей грамматической информацией, а для задания даты нам потребуется написать регулярное выражение:

#encoding "utf-8"
ProperName -> Word<h-reg1, gram='имя'>
              Word<h-reg1, gram='отч'>
              Word<h-reg1, gram='фам'>;
S -> ProperName 'родиться'<gram='прош'> 'в'
     AnyWord<wff=/[1-2]?[0-9]{1,3}г?\.?/> ('год' <gram='ед, дат'>);

Регулярное выражение, как правило, пишется в поле wff (подробно см. список помет) и его синтаксис почти полностью совпадает с синтаксисом регулярных выражений в Perl-е .

С помощью написанного правила из текста

(10) Иван Иванович Иванов родился в 1875 году в небольшом городке в поместье своего отца.

мы без труда узнаем подробности биографии Ивана Ивановича.

Исходные файлы проекта tutorial3

tutorial3/config.proto Конфигурационный файл парсера
tutorial3/mydic.gzt Корневой словарь
tutorial3/fioborn.cxx Грамматика
tutorial3/test.txt Текст
tutorial3/config.proto Конфигурационный файл парсера
tutorial3/mydic.gzt Корневой словарь
tutorial3/fioborn.cxx Грамматика
tutorial3/test.txt Текст

В конфигурационном файле указано, что анализируемый текст нужно читать из файла test.txt, поэтому проект запускается обычным способом.