【发布时间】:2022-01-17 21:34:12
【问题描述】:
Yang 模式在包含插入符号 ^ 或美元 $ 时不接受有效的正则表达式。
波纹管模式在正则表达式验证器上有效,但是当在 is-types.yang 文件中的 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 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";
}
我也不确定在哪里向杨提出问题/错误。
【问题讨论】:
-
这不是错误。 YANG 使用 XSD 风格的正则表达式,其中 ^ 和 $ 表示必须出现在匹配字符串中的文字。表达式总是隐式锚定的(整个值必须匹配),所以你所说的关于不需要的值是不可能的,除非你的 YANG 验证器实现是非标准的(因此不是 YANG 验证器)。
-
既然您还询问 YANG 规范中的错误在哪里讨论,那就是 NETMOD WG 邮件列表 (ietf.org/mailman/listinfo/netmod)。如果您怀疑有问题,那将是去的地方。每个 IETF RFC 文档也有一个勘误页,您可以在其中检查问题是否已被报告 (rfc-editor.org/errata_search.php?rfc=7950&rec_status=0)。
标签: python regex ietf-netmod-yang yang ietf