如何在 Watson Conversation 中使用电子邮件正则表达式触发节点?

How to trigger a node using email regex in Watson Conversation?

我正在尝试从 Watson Conversation 中的用户输入文本中提取电子邮件地址。首先,我需要使用如下 if 条件触发特定节点:

input.text.contains('\^(([^<>()[].,;:s@\"]+(.[^<>()[].,;:s@\"]+)*)|(\".+\"))@(([[‌​0-9]{1,3}.[0-9]{1,3}‌​.[0-9]{1,3}.[0-9]{1,‌​3}])|(([a-zA-Z-0-9]+‌​.)+[a-zA-Z]{2,}))$\')

但它不起作用,我尝试了很多我在互联网上找到的正则表达式,但其中 none 有效。有谁知道如何编写正确的正则表达式?

我建议使用更简单的 approximate 正则表达式来匹配您需要使用接受正则表达式的 String.matches(string regexp) 方法的电子邮件:

input.text.matches('^\S+@\S+\.\S+$')

不要忘记双转义反斜杠以便在模式中定义文字反斜杠。

图案详情:

  • ^ - 字符串开头
  • \S+ - 一个或多个非空白字符
  • @ - @ 符号
  • \S+ - 一个或多个非空白字符
  • \. - 文字点
  • \S+ - 一个或多个非空白字符
  • $ - 字符串结尾。