为 Amazon Lex 调度机器人检测并解析格式为“2-4pm”的时间范围

Detect and parse a time range in a format like "2-4pm" for Amazon Lex scheduling bot

简短版本:给定 I'm going to be out of the office from 2-4pmI'm out of the office from 10am-noon tomorrow 等用户输入,我如何隔离时间范围以便我可以在破折号上拆分它并将其作为开始时间和结束时间处理?

长版本以防其他解决方案可行:

我正在使用 Amazon Lex 机器人进行外出安排。我的话语是用类似于 I'll be out of the office from {StartTime} to {EndTime} 的短语设置的,如果用户以 2pm to 4pm 这样的格式输入时间,这些短语会很好用。但是,一些用户说 I'll be out of the office from 2-4pm 甚至更糟 10am-noon。因为 Lex 话语需要格式化为可以对 Alexa 等大声说出来的句子,它不会让你使用破折号,所以我不能创建像 {StartTime}-{EndTime} 这样的话语来告诉它期望日期格式。

我已经设置了 Lambda 验证函数,因此我可以对用户的输入进行自定义处理,但我不确定如何隔离那段字符串以便将其解析到我的 StartTimeEndTime 个插槽。

如果您正在寻找正则表达式:

\b(\w+)\s*-\s*(\w+)\b

Demo