Именованные группы и обратные ссылки

Именованные группы используют для хранения извлеченных данных и дальнейшей работы с ними.

Синтаксис

{запрос}:имя

Весь запрос или подзапрос заключается в фигурные скобки. Имя используется для ссылки на содержимое указанной группы.

Обратите внимание, что пробелы между правой скобкой, двоеточием и именем не допускаются.

Когда правило успешно извлекает некоторый текст, последовательность, соответствующая query, сохраняется в именованной группе «имя». В дальнейшем к содержанию группы можно обратиться с помощью обратной ссылки.

Синтаксис

$имя

Именованная группа может хранить совпадения всего запроса или любого корректного поискового подзапроса.

Пример

{a}:1 – корректно;

{a}:1 or b – корректно;

{a or b}:3 – корректно, «a or b» – корректный PDL-запрос;

{phrase(a, b)}:1 – корректно, «phrase(a, b)» – корректный PDL-запрос;

phrase({a}:1,{b}:2) – корректно, и «a», и «b» – корректные PDL-запросы;

{phrase(a,b) and phrase(c,d)}:2 – корректно, «phrase(a,b) and phrase(c,d)» корректный PDL-запрос;

phrase({a, b}:2, c) – ошибка, «a, b» – некорректный PDL-запрос;

a {or b}:3 – ошибка, «or b» – некорректный PDL-запрос.

Именованные группы могут быть вложены друг в друга в произвольном порядке.

Примеры

{follow({a}:1, b)}:2

{follow({{a}:1 or c}:2, b)}:3

Имя группы должно быть уникальным в пределах родительского правила.

Содержимое именованной группы неизменно. Это означает, что вложенные правила могут ссылаться на именованные группы, но не изменять их значения, которые были объявлены в родительских правилах (за исключением случаев, описанных в разделе «Типы правил»). Если правило устанавливает дополнительные ограничения для значений, хранящихся в именованной группе, необходимо объявить новую именованную группу.