Шаблон Ян не принимает регулярное выражение, содержащее ^ и $
Шаблон Ян не принимает допустимое регулярное выражение, если он содержит знак символа ^ или доллар $.
Приведенный ниже шаблон действителен для валидаторов Regex, но при запуске внутри шаблона шаблона Янга в файле is-types.yang возникают ошибки моего приложения.
Однако, когда я снимаю символы ^ и $ с каждой части выражения, все работает нормально. Однако теперь это позволяет регулярному выражению принимать нежелательные значения.
Я пытаюсь сопоставить 1, 11, 1/1/1, 1/1/1/1.
Примеряем выкройку:
^([0-9]{1,3}/[0-9]{1,3}/[0-9]{1,3})$|^([0-9]{1,3}/[0-9]{1,3}/[0-9]{1,3}/[0-9]{1,3})$|^([0-9]{1,2})$
Ян typedef:
typedef interface_number_value {
type string {
pattern "([0-9]{1,3}/[0-9]{1,3}/[0-9]{1,3})|([0-9]{1,3}/[0-9]{1,3}/[0-9]{1,3}/[0-9]{1,3})|([0-9]{1,2})" {
error-message "error";
}
}
description
"description";
}
Также я не уверен, где поднимать проблемы / ошибки с Янгом.
1 ответ
Вот что RFC7950 говорит об утверждении «шаблон»:
Оператор «шаблон», который является необязательным подоператором оператора «тип», принимает в качестве аргумента строку регулярного выражения, как определено в [XSD-TYPES]. Он используется для ограничения встроенного типа «строка» или типов, производных от «строки», значениями, соответствующими шаблону.
Если следовать нормативной ссылке
XSD-TYPES
, вы в конечном итоге получите:
[XSD-TYPES] Бирон, П. и А. Малхотра, «XML-схема, часть 2: типы данных, второе издание», Рекомендация консорциума World Wide Web REC-xmlschema-2-20041028, октябрь 2004 г., http://www.w3.org/TR/2004/REC-xmlschema-2-20041028.
Поэтому регулярные выражения в операторах "шаблона" YANG определяются спецификациями типа схемы XML (XSD) (и их конкретной версией для YANG 1.0 и 1.1).
В отличие от некоторых других разновидностей регулярных выражений,
^
символ в начале «шаблона» YANG или
$
в конце YANG «шаблона» не интерпретируются как якоря. Вместо этого они интерпретируются буквально как символы, которые должны совпадать. Все выражения «шаблона» неявно привязаны и поэтому соответствуют всему значению.
Вы можете узнать больше о специфике регулярных выражений схемы XML здесь .