通过正则表达式解析语音激活报警的时间

时间:2018-05-02 16:26:38

标签: regex voice-recognition

我正在尝试编写一个正则表达式,可以正确地解析这些可能的语音命令来设置警报,例如:

第1组:

  

在下午3:50发出警报     明天3点50分发出警报     设置闹钟6点钟左右     设置闹钟3点

第2组:

  

在1小时10分钟内设定闹钟     在59分钟内设置闹钟
    在6小时内设置闹钟

第3组:

  

从现在起3个小时内设置闹钟
    在2个半小时内发出警报     在半小时内设置闹钟

此表达式适用于第1组:

(\D)+(\d+)(?::)?(\d+)?(?: )?(a\.m\.|p\.m\.)?(.+)

https://regex101.com/r/H6z5NU/3

明天下午3点发出警报   第1组28-29
  第2组.29-30 3
  第5组31-35 p.m.

明天下午3点50分发出警报   第1组28-29
  第2组.29-30 3
  第3组.31-33 50
  第5组.34-38 p.m.

该表达式适用于第2组:

(\D)+(\d+){1,2}( hour| minute)((\D)+(\d+){1,2}( minute))?(.+)?

https://regex101.com/r/3yt7tK/1

在20小时1分钟内发出警报   第1组15-16
  第2组16-18 20
  第3组.18-23 hour
  第4组.23-37 s and 1 minute
  第5组.28-29
  第6组.29-30 1
  第7组.30-37 minute

在1分钟内设置闹钟
  第1组15-16
  第2组16-17 1
  第3组.17-24 minute

但是我正在疯狂地试图获得可以处理上午/下午时/分钟的秘密酱。

附录:我有自己的识别解析器使用各种工具构建(例如vanilla python - 没有ML导入)并且它已经成功处理了几个任务...只是尝试添加警报设置任务并希望得到一些正则表达式救命。谢谢!

===========又一次更新===========

此表达式适用于第1组:

(\D+)(noon|midnight|\d{1,2})(?::(\d{0,2})| o'clock)?(?: )?(p.m.|a.m.|noon|midnight)?

https://regex101.com/r/H6z5NU/5

并处理“中午12点”或“午夜”

而且......这个表达式适用于第2组和第3组:

(\D)?(\d){0,2}(?: )?(and a )?(hour|minute|quarter|half)((\D)+(\d+){0,2}(?: )?(minute|hour))?(.+)?

https://regex101.com/r/3yt7tK/2

目前,我可能只是单独使用这两个,并通过查找不同的关键字来确定合适的一个。

0 个答案:

没有答案