如何解决DialogFlow CX 为 REGEX ENTITIES 抛出“正则表达式匹配太广泛”错误
我尝试为例如值定义一个 DialogFlow CX 自定义实体"0.23" 使用 Regex 选项并输入以下 Regex:[+]?([.]\d+|\d+([.]\d+)?)
但 DiglogFlow CX 不会接受这个 Regex 并抛出错误 Validate entity failed because of the following reasons: Regular expression match is too broad: [+]?([.]\d+|\d+([.]\d+)?)
我在许多其他正则表达式示例中遇到了这个问题。为什么我不能像上面那样使用 Regex?这一点也不广泛,对吧?这完美地定义了我需要的非常具体的数字格式。好像我不明白这一切......?!
解决方法
“正则表达式匹配太广泛。” 如果您定义的 regular expression 的模式不够具体,则会出现错误 - 这可能导致它几乎匹配任何内容或匹配具有相同模式的无限值。
例如,您的正则表达式 [+]?([.]\d+|\d+([.]\d+)?)
可以将多个数字与示例模式匹配:
- 2.34
- 0.123 231.1231 .145 …
对于您的用例,您可以考虑改用 @sys.number system entity。 @sys.number 匹配任何序数和基数,包括小数。
但是,如果您更喜欢使用正则表达式实体,则可以使用以下语法之一来接受十进制数:
-
^[+]?([.]\d+|\d+([.]\d+)?)$
-
^ 表示文本的开始
-
$ 表示文本结束
注意:^ 和 $ 符号阻止正则表达式匹配具有相同模式的无限值。前任。 23.23 13.31 23.12 0.113 …
-
-
[0-9]*[.][0-9]+
- [0-9]* 表示匹配从“0”到“9”的一位或多位数字或无
- [.] 表示只会匹配“.”
- [0-9]+ 表示将匹配从“0”到“9”的一位或多位数字
上面的语法将匹配这些格式:
- 0.23
- .23
- 123.4567
Dialogflow 使用 Google RE2 syntax 作为正则表达式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。