DialogFlow CX 为 REGEX 实体抛出 "Regular expression match too broad" 错误
DialogFlow CX throwing "Regular expression match too broad" error for REGEX ENTITIES
我尝试为值定义一个 DialogFlow CX 自定义实体,例如“0.23”使用正则表达式选项并输入以下正则表达式:[+]?([.]\d+|\d+([.]\d+)?)
但是 DiglogFlow CX 不会接受这个正则表达式并抛出错误 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”的一个或多个数字或none
- [.]表示只会匹配“.”
- [0-9]+表示匹配“0”到“9”中的一个或多个数字
上面的语法将匹配这些格式:
- 0.23
- .23
- 123.4567
Dialogflow 使用 Google RE2 syntax 作为正则表达式。
我尝试为值定义一个 DialogFlow CX 自定义实体,例如“0.23”使用正则表达式选项并输入以下正则表达式:[+]?([.]\d+|\d+([.]\d+)?)
但是 DiglogFlow CX 不会接受这个正则表达式并抛出错误 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”的一个或多个数字或none
- [.]表示只会匹配“.”
- [0-9]+表示匹配“0”到“9”中的一个或多个数字
上面的语法将匹配这些格式:
- 0.23
- .23
- 123.4567
Dialogflow 使用 Google RE2 syntax 作为正则表达式。